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