首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayList<HashMap<String,String>>不能为API9正确地转换为JSONArray

ArrayList<HashMap<String,String>>不能为API9正确地转换为JSONArray
EN

Stack Overflow用户
提问于 2014-10-17 07:16:28
回答 1查看 712关注 0票数 3

关于将ArrayList存储到共享首选项中,我遇到了问题。我决定将ArrayList<HashMap<String, String>>转换为JSONArray,以便下次需要它时可以解析JSON,因为我不能将ArrayList>存储为字符串,并将其带回原来的形式。

现在发生的情况是,对于运行在API 19中的设备,ArrayList成功地转换为JSON格式,但奇怪的是,对于运行在API 9中的模拟器设备,它没有正确地转换。当我检查原因时,是因为转换后的字符串没有正确格式化而导致错误。我的意思是,没有正确格式化,而是将[{"key":"value"}]格式转换为[{key:value}],删除双引号,这是JSON所必需的,这会导致以下错误消息:

代码语言:javascript
复制
org.json.JSONException: Unterminated object at character

下面是代码:

代码语言:javascript
复制
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版本检查来处理它。

EN

回答 1

Stack Overflow用户

发布于 2015-02-12 18:21:30

你好像把数组列表存储在你的股票里,

Sharedpreferences允许存储字符串,所以像这样使用可以帮助您

代码语言:javascript
复制
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();
}

这会很好的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26419842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档