Java Jackson Converter-web服务混合了驼峰大小写和下划线-我可以使用多极命名策略吗
我有一门课:Java Jackson Converter-web服务混合了驼峰大小写和下划线-我可以使用多极命名策略吗,java,spring,spring-boot,kotlin,jackson,Java,Spring,Spring Boot,Kotlin,Jackson,我有一门课: class Person { String firstName; String lastName; // Getters and stuff } 来自web服务的JSON类似于'{“firstName”:“Mike”,“last_name”:“last”}' 有没有一种方法可以将Jackson配置为转换,而不使用JsonProperty注释对每个字段的格式进行注释?这是一个人为的示例,但我的“真正”web服务有大量字段 如果我使用默认的大小写,我会得到firstN
class Person {
String firstName;
String lastName;
// Getters and stuff
}
来自web服务的JSON类似于'{“firstName”:“Mike”,“last_name”:“last”}'
有没有一种方法可以将Jackson配置为转换,而不使用JsonProperty
注释对每个字段的格式进行注释?这是一个人为的示例,但我的“真正”web服务有大量字段
如果我使用默认的大小写,我会得到firstName set和lastName null,如果我得到SNAKE\u case,我会得到相反的结果
我能要两种都试一下吗
以下是我正在使用的映射器的(kotlin)配置,当前已设置姓氏,而firstName未设置:
@Bean
fun mappingJackson2HttpMessageConverter(): MappingJackson2HttpMessageConverter {
val jsonConverter = MappingJackson2HttpMessageConverter()
val objectMapper = Jackson2ObjectMapperBuilder()
.modules(KotlinModule())
.build<ObjectMapper>()
.setVisibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.ANY)
.setVisibility(PropertyAccessor.CREATOR, JsonAutoDetect.Visibility.ANY)
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
jsonConverter.objectMapper = objectMapper
return jsonConverter
}
@Bean
有趣的mappingJackson2HttpMessageConverter():mappingJackson2HttpMessageConverter{
val jsonConverter=MappingJackson2HttpMessageConverter()
val objectMapper=Jackson2ObjectMapperBuilder()
.modules(KotlinModule())
.build()
.setVisibility(PropertyAccessor.SETTER、JsonAutoDetect.Visibility.ANY)
.setVisibility(PropertyAccessor.CREATOR,JsonAutoDetect.Visibility.ANY)
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_案例)
.configure(针对未知属性的反序列化功能.FAIL,false)
jsonConverter.objectMapper=objectMapper
返回jsonConverter
}
您是仅反序列化还是同时序列化?如果要序列化回JSON,则绝对需要对字段进行注释(因为Java字段没有关于使用哪种情况的信息)。假设您只进行反序列化,我设想您可以编写一个自定义命名策略,如果键包含“\u”,则将委托给SNAKE\u case,否则将委托给lowerCamelCase。这里似乎有一个例子(不包括委托,但希望您可以构建每个内置命名策略):(抱歉,我不是专家)。我只是反序列化-我可能会在有时间的时候尝试一下……您是只反序列化,还是也序列化?如果要序列化回JSON,则绝对需要对字段进行注释(因为Java字段没有关于使用哪种情况的信息)。假设您只进行反序列化,我设想您可以编写一个自定义命名策略,如果键包含“\u”,则将委托给SNAKE\u case,否则将委托给lowerCamelCase。这里似乎有一个例子(不包括委托,但希望您可以构建每个内置命名策略):(抱歉,我不是专家)。我只是反序列化-我可能会在有时间的时候尝试一下。。。