关于将ArrayList存储到共享首选项中,我遇到了问题。我决定将ArrayList<HashMap<String, String>>转换为JSONArray,以便下次需要它时可以解析JSON,因为我不能将ArrayList>存储为字符串,并将其带回原来的形式。
现在发生的情况是,对于运行在API 19中的设备,ArrayList成功地转换为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版本检查来处理它。
发布于 2015-02-12 18:21:30
你好像把数组列表存储在你的股票里,
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();
}这会很好的。
https://stackoverflow.com/questions/26419842
复制相似问题