Jackson反序列化报错:未识别字段'status'未标记可忽略求解决
解决Jackson未识别字段"status"的问题
错误原因
你遇到的UnrecognizedPropertyException是因为返回的JSON数据里包含status字段,但你的KYCScoreIndResponse实体类没有对应属性,Jackson默认会对未识别字段抛出错误。之前添加@JsonProperty注解没用,是因为这个注解仅用于映射已知的JSON字段和Java属性,无法处理完全不存在的未知字段。
解决方案
三种常用处理方式,按需选择:
- 添加对应字段
如果status是业务需要的字段,直接在类中新增属性:
@Data @JsonInclude(JsonInclude.Include.NON_NULL) public class KYCScoreIndResponse { // 原有属性... private String status; // 对应JSON中的status字段 @JsonIgnore private HttpStatus httpStatus; private Links _links; }
- 类级别忽略未知字段
仅让当前类忽略所有未识别字段,在类上添加注解:
@Data @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) // 新增此注解 public class KYCScoreIndResponse { // 原有属性... }
- 全局配置忽略未知字段
如果多个类都存在这类问题,可配置全局Jackson规则:
- Spring Boot项目在
application.properties中添加:spring.jackson.deserialization.fail-on-unknown-properties=false - 或通过配置类自定义
ObjectMapper:@Configuration public class JacksonConfig { @Bean public ObjectMapper objectMapper() { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); return objectMapper; } }
内容的提问来源于stack exchange,提问作者Avinash Avi
相关产品推荐
相关产品推荐

