当 minifyEnabled 为 true 时,如何将 JSON 字符串转换为自定义对象?
Posted
技术标签:
【中文标题】当 minifyEnabled 为 true 时,如何将 JSON 字符串转换为自定义对象?【英文标题】:When minifyEnabled is true ,how to convert JSON String to Custom Object? 【发布时间】:2021-05-04 04:10:37 【问题描述】:我的 android 应用使用 API 获取 JSON 字符串并希望将其转换为自定义对象。
当 minifyEnabled 为 false 时,它运行良好,但是当设置为 true 并制作 APK 时,经过一些测试我发现 Gson 无法将 JSONObject 字符串映射到我的客户对象,并且所有属性都为 null。
JSONObject obj = new JSONObject(result);// result is a string that have got from the API
Gson gson = new Gson();
String v=String.valueOf(obj);
MyObjectModel mobj= gson.fromJson(v,MyObjectModel.class);//Null Execption happen here
String t=goodMoodContentModel.getContentText();//t is null when minifyEnabled is true
为什么会发生这种情况以及如何处理?
更新:
我用这个代码来测试它:
debug
minifyEnabled true
shrinkResources false
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
【问题讨论】:
【参考方案1】:您是否尝试在您的 pro-guard 规则中保留该类(-keep ETC)?
【讨论】:
你能解释一下吗?正如您在更新中看到的,useProguard =false 您的更新显示了调试配置。您提到您正在构建一个 apk,因此您应该在 build.gradle 中指定一个“发布”构建类型以上是关于当 minifyEnabled 为 true 时,如何将 JSON 字符串转换为自定义对象?的主要内容,如果未能解决你的问题,请参考以下文章
当 minifyenabled 为 true 时,Tesseract 错误 java.lang.NoSuchFieldError
当我设置 minifyEnabled = true 时,应用程序无法使用 API
Android - 当 minifyEnabled true 导致 java.lang.ExceptionInInitializerError 时,带有混淆 AAR 库的应用程序崩溃
设置 minifyEnabled 为 true 时无法使用 GSON 解析 json 对象