直接举例说明。Spring Boot 版本是 v2.7.5 ,Jackson 默认版本,Jackson 的property-naming-strategy
是默认的LOWER_CAMEL_CASE
,使用了 Lombok 。
我现在有个 DTO:
@Getter @Setter public class HelloReq { private String eMail; private String bColor; }
有个 RestController 方法:
@PostMapping(value = "/public/testWord") public HelloReq testDatetimeObj(@RequestBody HelloReq req) { return req; }
当 Post 一个 JSON 过去:
{ "eMail": "[email protected]", "email": "[email protected]", "bcolor": "blue", "bColor": "black" }
响应的是:
{ "email": "[email protected]", "bcolor": "blue" }
也就是说 DTO 中aBcd
形式的字段在序列化和反序列化时被当做abcd
处理了。
各位知道是什么原因吗?有什么解决办法。
目前是通过@JsonProperty("bColor")
注解解决这个问题,请问还有什么全局的办法吗?
1 xuyang2 2022-12-12 09:14:44 +08:00 ![]() |
2 asd999cxcx 2022-12-12 17:19:38 +08:00 ![]() 这个问题之前遇到过,好像是 JavaBean 规范和 Spring 的规范不一样导致的吧 |
3 asd999cxcx 2022-12-12 17:21:10 +08:00 ![]() 具体可以参考这篇文章 https://www.jianshu.com/p/bef7b73e5062 |
![]() | 4 zeyexe OP @asd999cxcx 感谢,这个问题解释得很清楚了。 |