2

我有 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

4

1 回答 1

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;
        }
    });
于 2019-01-05T00:40:03.883 回答