JsonArray与JsonObject的区别与解析
JsonArray与JsonObject的区别:
JsonArray是以“[]”包裹起来的数组(Array数组),而JsonObject是“{}”包裹起来的对象(Object对象);
jsonArray数组
数据1、{"datas":[{"id":254,"no":"1001","name":".欧阳兰兰","addr":"贵州贵阳","phone":"15264546655","em":"54545@qq.com"}],"flag":"1"}
jsonObject数组
数据2、{"datas":{"id":254,"phone":"15859977978"},"flag":"1"}
数据3、{"datas":{"id":254,"phone":"15859977978","list":[{"id":254,"em":"54545@qq.com"},"flag":"1"}//jsonObject中有嵌套JsonArray,这是用于真实数据中的多对多关系数组
从这几组数据中大家都可以看到,如果这是对于一个新手来说,还是有一小点点难度的,尤其是数据2和数据4,json数组之前的嵌套要如何解析呢,请看下文(均以json数据转换成list<Hash<String,String>> 为例)
方法一、 解析JsonArray数组,返回List HashMap<String,String> 数组
参数1、String rs,这个参数是指从数据库中获取的整条数据 如( {"datas":[{"id":254,"flag":"1"})
参数2、String[] keyset 这个参数是关键字数组,如:datas数组中的关键字{"id","no","name","addr","phone","em"};
//将jsonarray数组转换成List数组 public static List<HashMap<String,String>> getJsonArrayToList(String rs,String[] keys) { // 转换成字符数组 try { // String jsonAry = new JSONObject(rs).getString("keys"); JSONArray json = new JSONArray(rs); List<HashMap<String,String>> infos = new ArrayList<HashMap<String,String>>() ; for (int i = 0; i < json.length(); i++) { JSONObject jsonObject = json.getJSONObject(i); HashMap<String,String> map=new HashMap<String,String>(); for (int j = 0; j < keys.length; j++) { map.put(keys[j],jsonObject.getString(keys[j])); } infos.add(map); } return infos; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
方法二、 解析JsonObject数组,String> 数组
// jsonObject 转化成list<Hash<String,String>> public static List<HashMap<String,String>> getJSONObjToList(String jstr,String key, String keys[]) { List<HashMap<String,String>> infos=new ArrayList<HashMap<String,String>>(); HashMap<String,String> info=new HashMap<String,String>(); try { String jsonStringer = new JSONObject(jstr).getString(key); for (int i = 0; i < keys.length; i++) { String josn = new JSONObject(jsonStringer).getString(keys[i]) .toString(); info.put(keys[i],josn); } infos.add(info); return infos; } catch (JSONException e) { e.printStackTrace(); } return null; }
先用上面这个方法获取到datas的数据如{"datas":{"id":254,"flag":"1"},然后再通过下面的方法取出list的数据如:"list":[{"id":254,"em":"54545@qq.com"}]
注:re传入的值应该是list字符串,keys数组是list对应的关键字如{“id”,em}
//将jsonarray数组转换成List数组 public static List<HashMap<String,String>> getJsonObjToList(String rs,jsonObject.getString(keys[j])); } infos.add(map); } return infos; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
初学的经验,送给初学的你。祝你学有所成。。。。。。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|