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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?