我要处理的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;
}
}
至少您可以摆脱一种注释。