我在将ArrayList
存储到共享偏好设置中时遇到问题。我决定将ArrayList<HashMap<String, String>>
转换为JSONArray
,以便我可以在下次需要时解析JSON,因为我无法存储ArrayList&gt;作为字符串并将其恢复原状。
现在发生的事情是ArrayList
成功转换为我在API 19中运行的设备的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版本检查来处理它。
答案 0 :(得分:0)
您似乎将数组列表存储在共享首选项中,
Sharedpreferences允许存储字符串,所以像这样使用可以帮助你
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", items.toString()).commit();
}
这将很好。