首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中将ArrayList<Custom>转换为gson

在Java中将ArrayList<Custom>转换为gson
EN

Stack Overflow用户
提问于 2022-05-20 21:35:52
回答 1查看 44关注 0票数 1

下午好。我不明白为什么代码在Google市场上发布后不起作用。在android代码中发布之前

代码语言:javascript
运行
复制
ArrayList<TableAccount> tableAccount = getTableAccount();
String jsonStr = new Gson().toJson(tableAccount);

结果:

代码语言:javascript
运行
复制
Log.d(TAG, "RESULT: " + jsonStr);
RESULT: [{"name":"payment","valueFloat":0.0,"valueInt":0,"valueStr":"no"}]

但是,在张贴之后,我看到:

代码语言:javascript
运行
复制
Log.d(TAG, "RESULT: " + jsonStr);
RESULT: [{"a":"payment","b":"no","c":0,"d":0.0}]

为什么字母a b c会出现?

钥匙在哪里消失?"name“、"valueFloat”、"valueInt“、"valueStr”

EN

Stack Overflow用户

回答已采纳

发布于 2022-05-21 12:08:48

显然,您为您的release构建打开了ProGuard/R8,并且它的混淆模式重新命名了您的字段。

这里最大的教训是,在将release版本上传到Google之前,一定要对它们进行测试。

要解决这个问题,您可以:

  • 完全关闭ProGuard/R8,
  • 保留它但完全禁用混淆,
  • 保留它但禁用这些特定类的混淆,或者
  • 使用@SerializedName注释来教Gson使用什么名称,而不是默认使用Java反射来查找字段的名称(作为混淆重命名这些字段)H 211F 212
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72324998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档