簡體   English   中英

轉換數組列表<Custom>在 Java Android 中使用 gson

[英]Convert ArrayList<Custom> to gson in Java Android

下午好。 我不明白為什么代碼在 Google 市場上發布后不起作用。 在 android studio 代碼中發布之前

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}]

為什么會出現字母abc?

鑰匙在哪里消失了? [“名稱”,“valueFloat”,“valueInt”,“valueStr”]

顯然,您為release版本打開了 ProGuard/R8,並且它的混淆模式重命名了您的字段。

這里最大的教訓是確保在將release版本上傳到 Google Play 之前對其進行測試。

要解決此問題,您可以:

  • 完全關閉 ProGuard/R8,
  • 保留它但完全禁用混淆,
  • 保留它,但禁用這些特定類的混淆,或者
  • 使用@SerializedName注釋來教 Gson 使用什么名稱,而不是默認使用 Java 反射來查找字段的名稱(因為混淆重命名了這些字段)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM