是否可以在共享首选项中保存 JSON 数组?

我有一个需要保存的 JSON 数组。我正在考虑序列化它,但是将其另存为共享首选项中的字符串,然后在我需要读取它时重建它会更好吗?


答案 1

Java 中的 JSON 对象不是开箱即用地实现可序列化的。我已经看到其他人扩展了该类以允许这样做,但对于您的情况,我只是建议将JSON对象存储为字符串并使用其toString()函数。我在这方面取得了成功。

editor.putString("jsondata", jobj.toString());

并把它拿回来:

String strJson = sharedPref.getString("jsondata","0");//second parameter is necessary ie.,Value to return if this preference does not exist. 

if (strJson != null) {
           try {
               JSONObject response = new JSONObject(strJson);

         } catch (JSONException e) {

         }
  }

http://developer.android.com/reference/org/json/JSONObject.html#JSONObject(java.lang.String)


答案 2

这取决于数组的大小。假设它不是可笑的大(小于几百 Kb),只需将其存储到共享首选项即可。如果它大于此值,则可以将其保存到文件中。