在Java Android中将数组列表转换< Custom>为gson

thtygnil  于 2022-11-06  发布在  Java
关注(0)|答案(1)|浏览(151)

下午好。我不明白为什么代码在谷歌市场发布后不起作用。在Android工作室代码发布前

ArrayList<TableAccount> tableAccount = getTableAccount();
String jsonStr = new Gson().toJson(tableAccount);

实验结果:

Log.d(TAG, "RESULT: " + jsonStr);
RESULT: [{"name":"payment","valueFloat":0.0,"valueInt":0,"valueStr":"no"}]

可是,发帖之后,我看到:

Log.d(TAG, "RESULT: " + jsonStr);
RESULT: [{"a":"payment","b":"no","c":0,"d":0.0}]

为什么会出现字母a B c?
那么键在哪里消失呢?[“名称”,“值浮点”,“值整数”,“值字符串”]

pxiryf3j

pxiryf3j1#

显然,您为您的release构建打开了ProGuard/R8,它的模糊模式重命名了您的字段。
从这里得到的最大教训是,在将release构建上传到Google Play之前,请确保对其进行测试。
要解决此问题,您可以:

  • 完全关闭ProGuard/R8,
  • 将其保持打开状态,但完全禁用模糊处理,
  • 将其保持打开状态,但禁用这些特定类的模糊处理,或者
  • 使用@SerializedName注解来教Gson使用什么名称,而不是默认的使用Java反射来查找字段的名称(因为混淆重命名了这些字段)

相关问题