gpt4 book ai didi

java - 如何避免使用不可变对象(immutable对象)和不匹配的属性名称重复 @JsonProperty 注释?

转载 作者:行者123 更新时间:2023-11-30 10:21:31 27 4
gpt4 key购买 nike

我正在处理的 json 在属性名称中使用下划线,但我希望在 Java 中保留驼峰式大小写。此外,我正在使用不可变样式的 POJO,因为这是我们团队长期以来采用的最佳实践。

如果我在构造函数和 getter 中放置重复的 @JsonProperty 注释,一切都很好,但这会增加很多不必要的膨胀(在我们的类中,我们有几十个属性。)有没有办法准确地告诉 Jackson曾经如何将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;
}
}

至少你可以去掉其中一个注释。

关于java - 如何避免使用不可变对象(immutable对象)和不匹配的属性名称重复 @JsonProperty 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47833066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com