com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field的解决方法

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field

今天在写天气项目时遇到这样的错误,这个错误的原因就是我在使用ObjectMapper对象将json转化为对象时反序列化失败,什么意思呢,就是我查到的数据是JSON格式,想要转换为实体类,然后因为JSON里包含了实体没有的字段导致反序列化失败,我们说一下我解决了办法

方法一:修改ObjectMapper对象的配置

在在使用ObjectMapper对象将json转化为对象时,在创建ObjectMapper之后,加一句:

 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

 

第二种方法:添加类注解@JsonIgnoreProperties(ignoreUnknown = true)

如下图,是如何通过ObjectMapper的对象(这里了的mapper对象)进行反序列化,我查询出的数据是JSON格式,然后转换为了String类型,用strBody(String类型)保存

 

resp = mapper.readValue(strBody, WeatherResponse.class);

这句话就是我想将字符串strBosy转换为自定义的WeatherResponse对象,所以我的WeatherResponse类也就实现了Serializable接口,然后在实现了这个接口的类中添加类注解@JsonIgnoreProperties(ignoreUnknown = true)

所以我在自定义对象类中

WeatherResponse.java:

@JsonIgnoreProperties(ignoreUnknown = true)
public class WeatherResponse implements Serializable {
	private static final long serialVersionUID = 1L;
	private Weather data;
	private Integer status;
	private String desc;
}

Weather.java:

@JsonIgnoreProperties(ignoreUnknown = true)
public class Weather implements Serializable {
	private static final long serialVersionUID = 1L;
	private String city;
	private String aqi;
	private String ganmao;
	private String wendu;
}

在所有需要反序列化的对象类中添加注解

然后就解决了

参考博客:https://blog.csdn.net/qq_30739519/article/details/51273544

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值