Spring Boot RestTemplate下MappingJackson2HttpMessageConverter转JSON为实体无报错失败咨询
问题解答
一、JSON转换失败的原因
- 字段命名策略不匹配:JSON采用下划线蛇形命名(如
my_date、file_name、created_time),而实体类采用驼峰命名(如myDate、fileName、createdTime),Jackson默认采用严格字段名匹配,无法自动映射两种命名格式的字段,会直接将匹配失败的字段赋值为null,不会抛出异常。 - 枚举值匹配校验缺失:实体类中
context字段为ContextEnum枚举类型,若该枚举未定义MYC枚举项,该字段反序列化时也会被赋值为null,默认配置下不会触发异常。 - JSR310时间类型反序列化依赖缺失:实体类中
LocalDate、OffsetDateTime属于Java 8时间类型,若项目未引入jackson-datatype-jsr310依赖、也未配置对应反序列化器,这两个时间类型字段会反序列化失败,默认配置下同样仅赋值为null。
二、配置转换失败主动抛出异常的方法
你可以通过代码自定义MappingJackson2HttpMessageConverter的Jackson配置,修改反序列化特性,示例配置如下:
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.client.RestTemplate; @Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate() { RestTemplate restTemplate = new RestTemplate(); // 自定义Jackson反序列化规则 ObjectMapper objectMapper = new ObjectMapper() // 遇到JSON中存在但实体类不存在的属性时抛出异常 .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true) // 枚举值不匹配时抛出异常 .configure(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS, true) // 基本类型字段被赋值为null时抛出异常 .configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, true); // 注册JSR310时间类型序列化/反序列化模块,解决Java8时间类型转换问题 objectMapper.registerModule(new JavaTimeModule()); // 替换RestTemplate默认的Jackson消息转换器 restTemplate.getMessageConverters().removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter); restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter(objectMapper)); return restTemplate; } }
补充:如果要修复字段映射问题,可在上述ObjectMapper配置中追加命名策略规则:objectMapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);,即可自动完成下划线到驼峰的字段映射,无需逐个字段加@JsonProperty注解。
内容的提问来源于stack exchange,提问作者Jigar Shah
相关产品推荐
相关产品推荐

