杰克逊在我的春季启动应用程序中忽略了spring.jackson.properties

so-*_*ude 15 java spring spring-mvc jackson spring-boot

杰克逊忽略了spring.jackson.property-naming-strategy = SNAKE_CASE.我正在使用springBootVersion 1.4.2.RELEASE.在我的application.properties文件中,我添加了

spring.jackson.property命名策略= SNAKE_CASE

但杰克逊并不尊重这个属性,我的REST响应仍然是camelCase.有趣的是,这个注释工作正常

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)

有了这个注释,我得到了snake_case响应.但我不想对每个响应类进行注释,这有点烦人.

编辑

我也试过使用完全限定的类名,

spring.jackson.property命名策略= com.fasterxml.jackson.databind.PropertyNamingStrategy.SnakeCaseStrategy

这也没用

so-*_*ude 14

@EnableWebMvc在我的应用程序(face-palm!)中的一个类(ExceptionHandler)中有注释.

但是,根据这个问题,

如果您有@EnableWebMvc注释,则会禁用Spring MVC的自动配置,包括配置其消息转换器以自定义Jackson的序列化.

当您使用@EnableWebMvc时,这是预期的行为,通过这样做,您告诉Spring Boot您想要控制Spring MVC的配置.这包括配置其HTTP消息转换器以满足您的需求(de)序列化JSON.

如果要覆盖Jackson配置,可以使用spring.jackson.*属性,或者,如果需要更多控制,则声明自己的Jackson2ObjectMapperBuilder bean.

删除@EnableWebMvc注释后,此属性按预期工作.

  • 我在这里有同样的问题,但在我的情况下,如果我的代码没有"@EnableWebMvc"注释.有任何想法吗 ? (3认同)