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;
}
初学的经验,送给初学的你。祝你学有所成。。。。。。
原文链接:https://www.f2er.com/json/290059.html