G. *_*ini 1 java android json release gson
您好,我在发布版本中遇到了 Gson 库的问题。
实际上,在我的应用程序的发行版本中,使用该new Gson().toJson(obj)
方法会返回错误的字符串。
返回的字符串缺少我的对象的某些字段。发布版本是否可能需要一些缺失的选项?
以下是一些有用的信息:
obj
是一个实例ArrayList<MyClass>
implementation 'com.google.code.gson:gson:2.8.5'
Android Studio 3.5.1
MyClass 的构建如下:
public class MyClass{
@SerializedName("a")
private String a;
@SerializedName("b")
private Integer b;
@SerializedName("c")
private String c;
@SerializedName("d")
private String d;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
...
}
Run Code Online (Sandbox Code Playgroud)
例子:
MyClass example = new MyClass("a","b","c","d");
ArrayList<MyClass> listExample = new ArrayList<MyClass>();
listExample.add(example);
String strObj = new Gson().toJson(listExample);
Run Code Online (Sandbox Code Playgroud)
电流输出:
[
{
"b":"b",
"c":"c",
"d":"d",
}
]
Run Code Online (Sandbox Code Playgroud)
预期产出
[
{
"a":"a",
"b":"b",
"c":"c",
"d":"d",
}
]
Run Code Online (Sandbox Code Playgroud)
要重现错误,只需关注 github: https: //github.com/Ciardini/error02
小智 5
在发布版本中构建 Android 编译器缩小并优化代码[请参阅 Android 文档]。R8 删除了一些明显无用的信息,这些信息是 Gson 正确序列化对象所必需的。为了防止 R8 剥离此信息,您需要将以下代码添加到 proguard-rules.pro 文件中:
-keep class com.giacomociardini.error02.entities.** { <fields>; }
有关其他详细信息,您可以参考 Gson 官方GitHub存储库上的此示例。
归档时间: |
|
查看次数: |
991 次 |
最近记录: |