我有课堂课@JsonIgnore-d:
public class MyClass {
...
@JsonIgnore
private SomeType myfield;
...
// getters & setters
}
Run Code Online (Sandbox Code Playgroud)
是否可以进行配置ObjectWriter,使其myfield在序列化期间包括即使被加入?基本原理:MyClass在许多地方都是序列化的,只有我希望拥有的单一特定的序列化myfield.
Wil*_*son 12
可以配置ObjectMapper为禁用JsonIgnore函数.以下是您可以尝试的一些可能的解决方案:
1.禁用特定注释字段的JsonIgnore函数.
您可以创建自定义JsonIgnore注释和自定义JacksonAnnotationIntrospector以从映射器上下文中删除注释.以下是这些想法:
注释@MyJsonIgnore序列化时应忽略的字段:
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class MyClass {
@MyJsonIgnore
private SomeType myField;
}
Run Code Online (Sandbox Code Playgroud)
@MyJsonIgnore包装是一个简单的自定义注释@JsonIgnore:
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@JsonIgnore
public @interface MyJsonIgnore {
}
Run Code Online (Sandbox Code Playgroud)
JacksonAnnotationIntrospector实现自定义以@MyJsonIgnore从映射器上下文中删除 :
public class DisablingMyJsonIgnoreIntrospector extends JacksonAnnotationIntrospector {
@Override
public boolean isAnnotationBundle(final Annotation ann) {
if (ann.annotationType().equals(MyJsonIgnore.class)) {
return false;
} else {
return super.isAnnotationBundle(ann);
}
}
Run Code Online (Sandbox Code Playgroud)
之后,您可以ObjectMapper在配置期间设置introspector :
ObjectMapper mapper = new ObjectMapper();
mapper.setAnnotationIntrospector(new DisablingMyJsonIgnoreIntrospector());
Run Code Online (Sandbox Code Playgroud)
结果是注释的字段@MyJsonIgnore可以正确编组.
2.禁用映射器的JsonIgnore函数
您可以创建自定义JacksonAnnotationIntrospector和覆盖hasIgnoreMarker方法以始终返回false:
public static class DisablingJsonIgnoreIntrospector extends JacksonAnnotationIntrospector {
@Override
public boolean hasIgnoreMarker(final AnnotatedMember m) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
hasIgnoreMarker是检查是否有注释忽略json属性.返回false将禁用JsonIngore函数.
3.禁用所有注释并指定为给定自动检测的属性类型ObjectMapper:
final ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.USE_ANNOTATIONS);
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
Run Code Online (Sandbox Code Playgroud)
这只是禁用所有注释.
希望这可以提供帮助.
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |