Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson Converter-web服务混合了驼峰大小写和下划线-我可以使用多极命名策略吗_Java_Spring_Spring Boot_Kotlin_Jackson - Fatal编程技术网

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。这里似乎有一个例子(不包括委托,但希望您可以构建每个内置命名策略):(抱歉,我不是专家)。我只是反序列化-我可能会在有时间的时候尝试一下。。。