本地保存List(Map(String, String))数据及JSON的一些用法
2015-09-21 15:18
716 查看
直接上代码,代码中对一些疑惑都有注释
public class PreferencesUtil { /** * 用SharedPreferences保存List(Map(String, String))数据 * @param context 上下文 * @param key 键 * @param datas 要存的数据 */ public static void saveMapInfo(Context context, String key, List<Map<String, String>> datas) { JSONArray mJsonArray = new JSONArray(); for (int i = 0; i < datas.size(); i++) { Map<String, String> itemMap = datas.get(i); /** * iterator(迭代器):是一个接口类型,.它可以随时修改或者删除集合 * 内部的元素,并且是在不需要知道元素和集合的类型的情况下进行的 */ Iterator<Map.Entry<String, String>> iterator = itemMap.entrySet().iterator(); JSONObject object = new JSONObject(); while (iterator.hasNext()) { /** * Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。 * 它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。 */ Map.Entry<String, String> entry = iterator.next(); try { object.put(entry.getKey(), entry.getValue()); } catch (JSONException e) { } } mJsonArray.put(object); } //下面这个相信大家都知道 SharedPreferences sp = context.getSharedPreferences("finals", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putString(key, mJsonArray.toString()); editor.commit(); } public static List<Map<String, String>> getInfo(Context context, String key) { List<Map<String, String>> datas = new ArrayList<>(); SharedPreferences sp = context.getSharedPreferences("finals", Context.MODE_PRIVATE); String result = sp.getString(key, ""); try { /** * 把字符串类型的result转换成JSON类型 */ JSONArray array = new JSONArray(result); for (int i = 0; i < array.length(); i++) { /** * 取得JSONarray的第i个元素 */ JSONObject itemObject = array.getJSONObject(i); Map<String, String> itemMap = new HashMap<>(); /** * 取得JSONarray的第i个元素映射(名/值 对)的所有名字的集合 */ JSONArray names = itemObject.names(); if (names != null) { for (int j = 0; j < names.length(); j++) { String name = names.getString(j); String value = itemObject.getString(name); itemMap.put(name, value); } } datas.add(itemMap); } } catch (JSONException e) { } return datas; } }
相关文章推荐
- JS有参函数的创建和调用
- knockoutJS学习笔记03:knockout简介
- JavaScript之Date
- js中splice的用法
- JavaScript实现网页加载进度条代码超简单
- JS显示循环输出的文字
- JS演示循环语句的用法
- JS 基本语法应用
- javascript BOM 浏览器对象模型
- 正则表达式
- JS的dom相关操作
- javascript中cookie的使用与解析
- Javascript验证方法大全
- xml 和json 数据格式及解析
- (转)如何将ecshop首页主广告位的flash轮播替换为js轮播
- js中splice()方法
- jsoncpp 编译注意事项
- JSTL EL表达式语言简介
- 前台jsp获取后台查询的结果集数据并实现分页显示
- DataTable转为JSON数据格式代码