前提条件:
- Java / Spring Boot
PropertyNamingStrategy.UpperCamelCaseStrategy
已设置- DTO课程字段是骆驼案例
- Json字段是上层驼峰案例
- DTO / Json字段名称已对齐
- 保持DTO类不可变,避免使用字段的setter
要求:
- 在DTO类中不使用
@JsonProperty
进行反序列化(隐式)
尝试使用带有@JsonPOJOBuilder
的嵌套构建器类或带有@JsonCreator
注释的构造函数,但是:
@JsonPOJOBuilder
带注释的构建器类,@JsonPropery
方法没有setField()
- setField()
方法未被Jackson调用
反序列化@JsonCreator
注释的构造函数 - 明确要求@JsonProperty
参数答案 0 :(得分:3)
我写了一个blog post的解决方案。总结:
以上将导致Jackson在字节码中找到构造函数的参数名称,而不需要构造函数上的@JsonCreator
或@JsonProperty
。
注意命名策略,您可以轻松地将其设置为applications.properties,虽然我还没有对其进行测试,但是应该使用非注释构造函数。
答案 1 :(得分:0)
使用@JsonCreator时,请使用驼峰式保护套。
在以下示例中,我使用了蛇皮套。 @JsonCreator 公共ApiResponseBuilder(@JsonProperty(“ status_code”)int statusCode,@JsonProperty(“ status_message”)String statusMessage){