ArrayList <hashmap <string,string =“”>&gt;无法正确转换为API9 </hashmap <string,>的JSONArray

时间:2014-10-17 07:16:29

标签: java android json arraylist

我在将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版本检查来处理它。

1 个答案:

答案 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();
}

这将很好。