写点什么

Retrofit 在 JSON 反序列化的时候提示 UnrecognizedPropertyException 异常

作者:HoneyMoose
  • 2023-04-25
    美国
  • 本文字数:641 字

    阅读完需:约 2 分钟

提示的异常信息如下:


java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "new_user" (class com.ossez.wechat.common.model.res.UserSummaryResponseBomAwareReader); 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

用户头像

HoneyMoose

关注

还未添加个人签名 2021-03-06 加入

还未添加个人简介

评论

发布
暂无评论
Retrofit 在 JSON 反序列化的时候提示 UnrecognizedPropertyException 异常_HoneyMoose_InfoQ写作社区