gpt4 book ai didi

java - 发布将 json 转换为列表时的构建问题

转载 作者:太空狗 更新时间:2023-10-29 14:39:45 25 4
gpt4 key购买 nike

我在 main/assets 文件夹中有一个 json 文件 -

[
{
"topic": "Studies",
"subMessage": "....",
"people": [
....
]
},
{
"topic": "....",
"subMessage": "...",
"people": []
}
]

我在下面使用这个方法来解析json并返回我的自定义列表-

final List<MyList> readJson() {
try {
InputStream raw = context.getAssets().open(context.getResources().getString(R.string.read_the_json));
Reader reader = new InputStreamReader(raw, "UTF-8);
return new Gson().fromJson(reader, new TypeToken<List<MyList>>() {
}.getType());
} catch (Exception e) {
Log.e(TAG, "Error : " + e.getMessage());
return null;
}
}

对于发布版本,我设置了 minifyEnabled true。但对于调试版本,它是错误的。

我发现,如果我在发布版本中将 minifyEnabled 设置为 false,它会起作用,但我需要 proguard 才能发布版本。

问题是在 Release build 中,方法返回 [][]。但在调试构建中,该方法返回 JSON 中的值。

可能是什么问题?

最佳答案

发生这种情况是因为 proguard 工具修改了您的类。您需要阻止混淆器混淆模型类。

不太好但最简单的方法:

  • 让所有模型类(例如 MyList)实现接口(interface) Serializable

  • 然后在文件 proguard-rules.pro 中,添加以下行:

    -keepclassmembers 类 * 实现 java.io.Serializable { *; }

更好的方法:

  • 直接将您的模型类包含在文件 proguard-rules.pro 文件中。例如。

    -keepclassmembers class com.example.MyList { *; }

关于java - 发布将 json 转换为列表时的构建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50256959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com