Retrofit 在 JSON 反序列化的时候提示 UnrecognizedPropertyException 异常
提示的异常信息如下:
java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "new_user" (class com.ossez.wechat.common.model.res.UserSummaryResponse$UserData), not marked as ignorable (5 known properties: "cancel_user", "new_users", "ref_date", "user_source", "cumulate_user"])
at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 63] (through reference chain: com.ossez.wechat.common.model.res.UserSummaryResponse["list"]->java.util.ArrayList[0]->com.ossez.wechat.common.model.res.UserSummaryResponse$UserData["new_user"])
at io.reactivex.internal.util.ExceptionHelper.wrapOrThrow(ExceptionHelper.java:46)
at io.reactivex.internal.observers.BlockingMultiObserver.blockingGet(BlockingMultiObserver.java:93)
问题和解决
这是因为 retrofit 在反序列化的时候,如果没有找到对应的对象名,将会报错。
关键是在下面这句话:
.addConverterFactory(JacksonConverterFactory.create())
需要做的也非常简单,只需要将上面的 Jackson 的 mapper 对象映射过来就可以了。
在 ObjectMapper 对象中,我们可以定义是不是忽略没有找到的字段。
就是下面这句话:
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
这样我们就不会因为没有找到字段而出现异常的问题了。
https://www.ossez.com/t/retrofit-json-unrecognizedpropertyexception/14399
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2022-04-25 Windows 11 修改 PIN 的长度为 4 位
2021-04-25 Maven 中的 release 和 snapshot 版本库的区别
2021-04-25 使用 IntelliJ IDEA 进行编译的时候提示 Java 的支持 Level 不够
2018-04-25 Confluence 6 用户宏示例 - Formatted Panel
2018-04-25 Confluence 6 用户宏示例 - Color and Size
2018-04-25 Confluence 6 用户宏示例 - NoPrint
2018-04-25 Confluence 6 用户宏示例 - Hello World