Java ArrayList<;HashMap<;字符串,字符串>&燃气轮机;无法为API9正确转换为JSONArray

Java ArrayList<;HashMap<;字符串,字符串>&燃气轮机;无法为API9正确转换为JSONArray,java,android,json,arraylist,Java,Android,Json,Arraylist,我在将我的ArrayList存储到共享首选项中时遇到问题。我决定将ArrayList转换为JSONArray,以便下次需要时可以解析JSON,因为我无法将ArrayList>存储为字符串并恢复其原始形式 现在发生的事情是,ArrayList被成功地转换为JSON格式,用于运行在API 19中的设备,但奇怪的是,对于运行在API 9中的仿真器设备,它不能正确地转换。当我检查原因时,这是因为转换的字符串格式不正确,导致错误。通过未正确格式化,我的意思是,它不是具有[{“key”:“value”}]格

我在将我的
ArrayList
存储到共享首选项中时遇到问题。我决定将
ArrayList
转换为
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();

}
private void storeStatusInSharedPreference(ArrayList项){
SharedReferences my_prefs=getActivity().GetSharedReferences(“my_prefs”,getActivity().MODE_PRIVATE);
JSONArray结果=新JSONArray(项目);
my_prefs.edit().putString(“test”,result.toString()).apply();
}

我不确定其他设备/版本是否会发生同样的情况,因为我只在这两个设备/版本上进行测试,这就是为什么我没有应用任何API版本检查来处理它。

您似乎将数组列表存储在您的SharedReferences中

SharedReferences允许存储字符串,因此可以像这样使用它来帮助您

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();
}
private void storeStatusInSharedPreference(ArrayList项){
SharedReferences my_prefs=getActivity().GetSharedReferences(“my_prefs”,getActivity().MODE_PRIVATE);
//JSONArray结果=新JSONArray(项目);
my_prefs.edit().putString(“test”,items.toString()).commit();
}
这很好