[英]Serialize and deserialize object flattened
我有2个班级:
public class SomeClass {
private AnotherClass anotherClass;
private String astring;
}
public class AnotherClass {
private Date field1;
private String field2;
}
我需要序列化和反序列化 SomeClass 的对象,并希望 json 看起来像
someClass {
field1: field1Value;
field2: field2Value;
astring: astringvalue;
}
即展平AnotherClass
的字段。
我知道我可以像这样使用 @JsonUnwrapped 注释
public class SomeClass {
@JsonUnwrapped
private AnotherClass anotherClass;
private String astring;
}
为了实现这一点,但由于anotherClass
出现在许多类中,我宁愿避免将此注释添加到每个类中。
有没有办法通过应用于AnotherClass
的客户序列化器和反序列化器来实现这种扁平化?
您可以使用 mixin 将@JsonUnwrapped
注释应用于所有类
public abstract class FlattenMixin {
@JsonUnwrapped
private AnotherClass anotherClass;
}
然后使用 mixinResolver 应用到所有类。
objectMapper.setMixInResolver(new MixInResolver() {
@Override
public Class<?> findMixInClassFor(Class<?> cls) {
// maybe filter to specific package ?
return FlattenMixin.class;
}
@Override
public MixInResolver copy() {
return null;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.