我有一个类,里面也有变量.有时我想忽略一些字段,有时候不反序列化(也许在序列化时).我怎么能在杰克逊这样做?
根据这个答案:https: //stackoverflow.com/a/43342675/5810648
我写了这样的序列化器:
public class CustomSerializer extends StdSerializer<Double> implements ContextualSerializer {
private final NAifNull annotation;
public CustomSerializer() {
super(Double.class);
this.annotation = null;
}
public CustomSerializer(NAifNull annotation) {
super(Double.class);
this.annotation = annotation;
}
@Override
public void serialize(Double value, JsonGenerator gen, SerializerProvider provider) throws IOException {
if (annotation != null && value == null) {
gen.writeString("N/A");
} else {
gen.writeNumber(value);
}
}
@Override
public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) {
NAifNull annotation = property.getAnnotation(NAifNull.class);
return new CustomSerializer(annotation);
}
}
Run Code Online (Sandbox Code Playgroud)
如果注释存在且字段为,则Witch应该写字符串"N/A" …