繁体   English   中英

序列化和反序列化扁平化的对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM