Android - Jackson JSON 解析器在“发布”版本中返回空值
Posted
技术标签:
【中文标题】Android - Jackson JSON 解析器在“发布”版本中返回空值【英文标题】:Android - Jackson JSON parser returns null value in 'release' builds 【发布时间】:2017-06-28 23:17:22 【问题描述】:我在我的 android 应用程序中使用 Jackson JSON 库从 REST API 解析 JSON。除了我使用ObjectMapper.readValue
和ObjectMapper.treeToValue
将JSON 反序列化为对象的几个实例之外,一切都运行良好。每次运行“调试”构建变体时它都能正常工作,但在运行“发布”构建时,它无法创建对象,而是返回 null。
我已经阅读了很多关于确保正确配置 Proguard 设置的内容,但我没有使用 Proguard 并且已删除我的应用程序中对 Proguard 的所有引用。是否还有其他可能导致“发布”版本出现问题的原因?
乔纳森
【问题讨论】:
【参考方案1】:这是我发现的唯一一篇描述我经历过的类似情况的帖子,但就我而言,没有内部类。 事实证明,这是由于某些字段是包私有的。 在调试版本中一切正常,但在发布版本中,这些字段为空。 将它们更改为公开,并且效果很好。为所有人设置 getter/setter 可能也可以,但我没有尝试。
【讨论】:
【参考方案2】:原来问题是由于我用来反序列化 JSON 的类是在我的活动类中声明的,因此是一个内部类。我读到内部类可以与 Jackson ObjectMapper 一起使用,只要它们被声明为静态的,所以不完全确定为什么它不能在“发布”模式下工作。一旦我把它变成了一个普通的公共课程,一切都很好。
【讨论】:
伙计,我整天都在为此挠头,然后发现了这个,谢谢!以上是关于Android - Jackson JSON 解析器在“发布”版本中返回空值的主要内容,如果未能解决你的问题,请参考以下文章
JSON:Jackson 流解析器——真的值得吗? [关闭]