微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JsonArray与JsonObject的区别与解析

JsonArray与JsonObject的区别与解析

JsonArrayJsonObject的区别:

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;
}

初学的经验,送给初学的你。祝你学有所成。。。。。。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐