2014-10-17 80 views
3

我在将我的ArrayList存储到我的共享首选项时遇到问题。我决定将ArrayList<HashMap<String, String>>转换为JSONArray,以便下次需要时可以解析JSON,因为我无法将ArrayList>存储为字符串并将其恢复为原始形式。ArrayList <HashMap <String,String >>无法正确转换为API9的JSONArray

现在发生的事情是,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版本检查来处理它。

回答

0

你似乎对存储阵列列表中你sharedprefrences,

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

这将是做工精细。

相关问题