对于API9,java ArrayList<HashMap<String,String>>无法正确转换为JSONArray
我在将ArrayList
存储到共享首选项中时遇到问题。我决定将ArrayList<HashMap<String, String>>
转换成JSONArray
,这样我下次需要时可以解析JSON,因为我无法存储ArrayList>;作为字符串,并将其恢复为原始形式
现在发生的事情是ArrayList
被成功地转换为JSON格式,用于我在API 19中运行的设备,但奇怪的是,对于在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版本检查来处理它
# 1 楼答案
你似乎在SharedReferences中存储了数组列表
SharedReferences允许存储字符串,所以像这样使用可能会帮助您
这很好