我有一个问题,关于将我的 ArrayList
保存到共享首选项中。我决定将 ArrayList<HashMap<String, String>>
转换为 JSONArray
,以便下次需要时可以解析JSON,因为我无法将 ArrayList 作为字符串存储并使其恢复为原始形式。
现在的情况是,对于运行在 API 19 上的设备,ArrayList
成功地转换为 JSON 格式,但对于运行在 API 9 的模拟器设备,则无法正常转换。当我查看原因时,发现转换后的字符串格式不正确,导致出现错误。我所说的“格式不正确”是指,它被转换为 [{key:value}]
的格式,而不是 [{"key":"value"}]
的格式,在 JSON 中需要双引号,这导致出现以下错误消息:
org.json.JSONException: Unterminated object at character
这里是代码:
private void storeStatusInSharedPreference(ArrayList<HashMap<String, String>> items){
SharedPreferences my_prefs = getActivity().getSharedPreferences("my_prefs", getActivity().MODE_PRIVATE);
JSONArray result = new JSONArray(items);
my_prefs.edit().putString("test", result.toString()).apply();
}
我不确定其他设备/版本是否会发生同样的情况,因为我只在这两个上进行了测试,所以我没有应用任何API版本检查来处理它。