Smi*_*ile 1 java json annotations jackson
public Class User {
private String name;
private Integer age;
...
}
ObjectMapper om = new ObjectMapper();
om.writeValueAsString(user);
Run Code Online (Sandbox Code Playgroud)
如何在不使用@JsonIgnore等任何注释的情况下过滤属性?
小智 8
你有两种可能的方式使用杰克逊
Mixin批注: - http://www.cowtowncoder.com/blog/archives/2009/08/entry_305.html
JSON过滤器: - http://wiki.fasterxml.com/JacksonFeatureJsonFilter
按名称排除属性的示例:
public Class User {
private String name = "abc";
private Integer age = 1;
//getters
}
@JsonFilter("dynamicFilter")
public class DynamicMixIn {
}
User user = new User();
String[] propertiesToExclude = {"age"};
ObjectMapper mapper = new ObjectMapper()
.addMixIn(Object.class, DynamicMixIn.class);
FilterProvider filterProvider = new SimpleFilterProvider()
.addFilter("dynamicFilter", SimpleBeanPropertyFilter.serializeAllExcept(propertiesToExclude));
mapper.setFilterProvider(filterProvider);
mapper.writeValueAsString(user); // {"name":"abc"}
Run Code Online (Sandbox Code Playgroud)
您可以代替DynamicMixIn创建MixInByPropName
@JsonIgnoreProperties(value = {"age"})
public class MixInByPropName {
}
ObjectMapper mapper = new ObjectMapper()
.addMixIn(Object.class, MixInByPropName.class);
mapper.writeValueAsString(user); // {"name":"abc"}
Run Code Online (Sandbox Code Playgroud)
注意:如果您只想排除属性,User可以将Object.class方法的参数更改addMixIn为User.class
按您可以创建的类型排除属性MixInByType
@JsonIgnoreType
public class MixInByType {
}
ObjectMapper mapper = new ObjectMapper()
.addMixIn(Integer.class, MixInByType.class);
mapper.writeValueAsString(user); // {"name":"abc"}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7802 次 |
| 最近记录: |