2014-10-17 41 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(); 
} 

這將是做工精細。

相關問題