将SharedPreference中的对象保存为Json和Key Changes

时间:2015-03-24 10:04:40

标签: android json sharedpreferences apk

我的PlayStore应用程序。当我使用新导出的apk更新我的应用程序时,SharedPreference键正在更改。您可以通过查看下面给出的json字符串来理解它。

我正在共享偏好中保存对象,如下所示。

  • 在SharedPreference中保存用户详细信息。

    Gson gson = new Gson();
    String json = gson.toJson(user);
    prefsEditor.putString("user", json);
    prefsEditor.commit();
    
  • 从sharedPrefernce获取详细信息

    Gson gson = new Gson();
    String json = myPref.getString("user", null);
    Log.v(MainActivity.TAG, "Json == "+json);
    user = gson.fromJson(json, User.class);
    

请查看我正在打印的jsons,将密钥更改为' a'' b'等

  • 当我正常运行时,JSON为Json == {"accessToken":"12345678","country":"India","countryCode":"91","email":"","firstName":"Aneesh","lastName":"Kamalone","nickName":"Kamalone","notificationId":"","phoneNumber":"******","profilePic":"","uniqueId":"","userId":"*****","userLatitude":14.9,"userLogitude":79.6}

  • 当我使用之前版本更新时,json为Json == {"a":"****","b":"Aneesh","c":"Kamalone","d":"Kamalone","e":"**********","f":"","g":"APA91bElQulddjH6xSR0WH8nfBGcFIbn-sRe-ChkhIx1c6Il05_wwGrTLm1QDNsr6TtaG1bIrICmXKhK1I8ZVzo0cqvwPWSj4NrxJKyzTsdPpNlizmGMaJfMWj_rjteP6yNoRFeDAZYfTCyhx-7WUAmTT2rX0q1S6Q","h":"","i":"12345678","j":"India","k":"91","l":14.9,"m":79.6,"n":""}

2 个答案:

答案 0 :(得分:1)

它正在使用 proguard ,它会混淆您的User课程。

Gson默认使用字段名称作为键。所以我建议使用@SerializedName注释来进行正确的json映射

答案 1 :(得分:0)

这是我的错误。我导出APK时未启用 proguard