java - ArrayList<HashMap<String, String>> 无法正确转换为 API9 的 JSONArray

标签 java android json arraylist

我在存储 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/

相关文章:

.net - 如何使用 WixToolset v3.11 修改 json

java - 为什么java中所有的对象都是动态创建的?

java - HashMap键值存储和检索

android - 使用多个数据源填充 Android ListView(使用加载器)

android - 为什么我在 Google Play 应用程序(仅限应用程序)中的所有屏幕截图都是像素化的

javascript - 如何防止 jwt token 在 angularjs 应用程序的页面刷新时丢失?

java - 检测布局中的第一个按钮

java - 构建 Android 项目失败并出现内部错误

android - 是否有隐藏导航栏的 xml 方式?

javascript - 不在 html 页面上显示来自 API 的值,而是加载 JSON