- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用不同的 JsonFilters 来序列化同一类的对象。
想象类 Foo
public class Foo{
Bar p1;
Bar p2;
}
和类 Bar
@JsonFilter("myFilter")
public class Bar{
String prop1;
String prop2;
String prop3;
}
现在我想要实现的是为类 Foo 中的变量 p1 和 p2 设置不同的 JsonFilters。
例如。对于 p1,我只想序列化 prop1,对于 p2,我想序列化 prop2 和 prop3。得到如下json
{
"p1": { "prop1":"blabla" }
"p2": { "prop2":"blabla", "prop3":"blabla" }
}
所以我会使用以下过滤器,以便只有“prop1”会被序列化:
FilterProvider filter = new SimpleFilterProvider().addFilter("myFilter",
SimpleBeanPropertyFilter.filterOutAllExcept("prop1"));
String json = new ObjectMapper().filteredWriter(filter).writeValueAsString(foo)
但是使用这个也会导致 p2 被序列化只有 prop1
我想像这样为 p2 创建另一个过滤器:
FilterProvider filter2 = new SimpleFilterProvider().addFilter("myFilter",
SimpleBeanPropertyFilter.filterOutAllExcept("prop2","prop3"));
但我真的找不到如何实现它,以至于 p1 和 p2 有不同的过滤器,因为它们属于同一类 Foo。
感谢您的阅读,希望有人能帮到您!
最佳答案
从 Jackson 2.3 开始,@JsonFilter
注释可以放在字段和方法上。我认为这对您的情况应该有所帮助。这是一个例子:
public class JacksonFilters {
static class Bar {
final public String prop1;
final public String prop2;
final public String prop3;
Bar(final String prop1, final String prop2, final String prop3) {
this.prop1 = prop1;
this.prop2 = prop2;
this.prop3 = prop3;
}
}
static class Foo {
@JsonFilter("myFilter1")
final public Bar p1;
@JsonFilter("myFilter2")
final public Bar p2;
Foo(final Bar p1, final Bar p2) {
this.p1 = p1;
this.p2 = p2;
}
}
public static void main(String[] args) throws JsonProcessingException {
final SimpleFilterProvider filterProvider = new SimpleFilterProvider();
filterProvider.addFilter("myFilter1",
SimpleBeanPropertyFilter.filterOutAllExcept("prop1"));
filterProvider.addFilter("myFilter2",
SimpleBeanPropertyFilter.serializeAllExcept("prop2"));
final Foo bar = new Foo(new Bar("a", "b", "c"), new Bar("d", "e", "f"));
final ObjectMapper mapper = new ObjectMapper();
mapper.setFilters(filterProvider);
System.out.println(mapper
.writerWithDefaultPrettyPrinter()
.writeValueAsString(bar));
}
}
输出:
{
"p1" : {
"prop1" : "a"
},
"p2" : {
"prop1" : "d",
"prop3" : "f"
}
}
关于java - Jackson 不同的 JSONFilter 同一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27041544/
我正在开发一个 REST api,它需要支持基于请求参数(基于 Spring MVC 3.0.x 和 Jackson)的可选属性过滤。 我正在研究实现的是获取一个字符串参数(格式为“fieldName
我正在使用 Spring 版本 4.3.3 和 Jackson 版本 2.8.3。我试图根据运行时确定的一些自定义逻辑从实体 bean 中过滤出特定字段。 @JsonFilter 似乎非常适合这种类型
我正在尝试使用不同的 JsonFilters 来序列化同一类的对象。 想象类 Foo public class Foo{ Bar p1; Bar p2; } 和类 Bar @JsonF
有谁知道在 Spring MVC 中使用 Jackson 的 @JsonFilter 注释来使调用者能够在运行时指定返回类型的任何示例? 我有一个 JSON API,我想通过提供像 getEntity
以此为基础Jira 我有这个方法: val innerResult: DeferredResult[Object] = new DeferredResult[Object]() override de
我使用了一些 JsonFilter ActionResultAttribute,它使用 newtonsoft.Json json 转换器将请求中的 json 转换为真实对象。这似乎在一些基本参数上工作
我有类似这个问题的需求:Custom Jackson Serializer for Wrapper Object ,但是当使用@JsonFilter时。 我有一个像这样的对象结构: @JsonFilt
我希望我的 map 仅在序列化为 JSON 时打印值。类似于此过滤器的内容,用于格式化日期 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern =
是否可以有选择地确定何时在运行时使用@JsonFilter注释? 当我不提供过滤器时,我收到 JsonMappingException 异常(见下文)。 背景: 我从 recent StackOver
我需要仅在一个 Controller 中过滤某些属性。 当我在 Controller 中将 Fasterxml JsonFilter 与 ObjectMapper 一起使用时,它可以正常工作,如下所示
我正在尝试使用 Jackson 库过滤 API 端点的响应。 我可以使用 @JsonFilter("[filterNameHere]") 但这最终会导致类期望每次都应用过滤器。 有没有一种方法可以只过
可以使用 Jackson @JsonView 和 @JsonFilter 注释来修改 Spring MVC Controller 返回的 JSON,同时使用 MappingJacksonHttpMes
我可以指定 Spring 的 RestTemplate 使用的 Jackson ObjectMapper 吗? 我不是 100% 这是我需要做的,但请参阅下面的详细信息。 背景:在this Stack
我是一名优秀的程序员,十分优秀!