我如何避免使用不变的对象和非匹配属性名称重复@jsonproperty注释



我要处理的JSON在属性名称中使用下划线,但我希望将骆驼盒放在Java中。此外,我正在使用不变的Pojos风格,因为这是我们团队长期以来采用的最佳实践。

如果我将重复的@jsonproperty注释在构造函数和getter上放置,一切正常,但是这增加了很多不必要的膨胀(在我们的课堂上,我们有几十个属性。一旦如何将Java属性名称转换为JSON属性名称?

 public class Foo {
     public final String someProperty;
     @JsonCreator
     public Foo(@JsonProperty("some_property") someProperty) {
         this.someProperty = someProperty;
     }
     @JsonProperty("some_property")
     public String getSomeProperty() {
         return someProperty;
     }
 }

您可以选择用于JSON的命名约定。在这种情况下,您需要Snake_case。它将将someProperty字段转换为"some_property": "" JSON。那么您不需要属性中的@jsonproperty。

ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);

在这种情况下,在foo中,您需要在构造函数中提供字段,而构造函数中需要@jsonproperty的内容:

public class Foo {
   public final String someProperty;
   @JsonCreator
   public Foo(@JsonProperty("some_property") String someProperty) {
       this.someProperty = someProperty;
   }
   public String getSomeProperty() {
       return someProperty;
   }
}

至少您可以摆脱一种注释。

最新更新