将 ArrayList<Custom> 转换为 Java Android 中的 gson

Convert ArrayList<Custom> to gson in Java Android

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

中发布之前
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?

钥匙在哪里消失了? [“名称”、“valueFloat”、“valueInt”、“valueStr”]

显然,您为 release 构建启用了 ProGuard/R8,其混淆模式重命名了您的字段。

从这里得到的最大教训是确保在将 release 构建版本上传到 Google Play 之前对其进行测试。

要解决此问题,您可以:

  • 完全关闭 ProGuard/R8,
  • 保留它,但完全禁用混淆,
  • 保留它,但禁用对这些特定 类 或
  • 的混淆
  • 使用 @SerializedName 注释来教 Gson 使用什么名称,而不是默认使用 Java 反射来查找字段的名称(因为混淆会重命名这些字段)