我用的是Sping Boot 2.7.15
我使用的objectMapper是由Jackson2ObjectMapperBuilder
(spring-web:5.3.29)创建的。
我尝试了objectMapper.writeValueAsString
与下面的类
data class SomeClass(
val oAuthClientType: String,
// ...
)
但结果如下
{"oauthClientType": "SOME_TYPE"}
为什么第二个字母A
大写被忽略?
这是窃听器吗
1条答案
按热度按时间btxsgosb1#
不是一个bug,而是Jackson的ObjectMapper的默认命名方案导致了您看到的行为。默认情况下,Jackson使用PropertyNamingStrategy命名方案.SNAKE_CASE,它将camelCase(或PascalCase)属性名称更改为snake_case。Snake_case将小写字符转换为小写字符,并使用下划线分隔单词。
因为第二个字符“A”在您的情况下被更改为字符“a”,并且单词没有用下划线分隔,所以属性oAuthClientType被转换为“oauthClientType”。
当使用此选项序列化为JSON时,属性名称oAuthClientType将保持原样。
请确保应用程序的命名策略符合您的首选名称约定,因为更改它将影响JSON对象中所有属性的序列化方式。