我在存储 ArrayList
时遇到问题进入我的共享偏好。我决定要转换 ArrayList<HashMap<String, String>>
进入JSONArray
这样我就可以在下次需要时解析 JSON,因为我无法将 ArrayList> 存储为字符串并将其恢复为原始形式。
现在发生的是 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 版本检查来处理它。
最佳答案
您似乎将数组列表存储在您的共享首选项中,
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();
}
这会很好。
关于java - ArrayList<HashMap<String, String>> 无法正确转换为 API9 的 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26419842/