[Spring Boot] 字段 eMail 被 Jackson 序列化为全小写的 email 的原因以及解决办法

2022-12-11 19:01:51 +08:00
 zeyexe

直接举例说明。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@gmail1.com",
    "email": "email@gmail2.com",
    "bcolor": "blue",
    "bColor": "black"
}

响应的是:

{
    "email": "email@gmail2.com",
    "bcolor": "blue"
}

也就是说 DTO 中aBcd形式的字段在序列化和反序列化时被当做abcd处理了。

各位知道是什么原因吗?有什么解决办法。

目前是通过@JsonProperty("bColor")注解解决这个问题,请问还有什么全局的办法吗?

907 次点击
所在节点    编程
4 条回复
xuyang2
2022-12-12 09:14:44 +08:00
asd999cxcx
2022-12-12 17:19:38 +08:00
这个问题之前遇到过,好像是 JavaBean 规范和 Spring 的规范不一样导致的吧
asd999cxcx
2022-12-12 17:21:10 +08:00
具体可以参考这篇文章 https://www.jianshu.com/p/bef7b73e5062
zeyexe
2022-12-12 17:34:04 +08:00
@asd999cxcx 感谢,这个问题解释得很清楚了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.fyfyfm.apispeedy.workers.dev/t/901753

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX