我有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
的客户序列化器和反序列化器来实现平坦化?
答案 0 :(得分:1)
您可以使用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;
}
});