JsonArray与JsonObject的区别与解析

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,"no":"1001","name":".欧阳兰兰","addr":"贵州贵阳","phone":"15859977978"},"flag":"1"}

 数据3、{"datas":{"id":254,"no":"1001","name":".欧阳兰兰","addr":"贵州贵阳","phone":"15859977978","list":[{"id":254,"no":"1001","name":".欧阳兰兰","addr":"贵州贵阳","phone":"15859977978","em":"54545@qq.com"}],"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,"no":"1001","name":".欧阳兰兰","addr":"贵州贵阳","phone":"15264546655","em":"54545@qq.com"}],"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数组,返回List HashMap<String,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,"no":"1001","name":".欧阳兰兰","addr":"贵州贵阳","phone":"15859977978"},"flag":"1"},然后再通过下面的方法取出list的数据如:"list":[{"id":254,"no":"1001","name":".欧阳兰兰","addr":"贵州贵阳","phone":"15859977978","em":"54545@qq.com"}]

注:re传入的值应该是list字符串,keys数组是list对应的关键字如{“id”,"name","no","addr","phone",em}


//将jsonarray数组转换成List数组
public static List<HashMap<String, String>> getJsonObjToList(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;
}

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


  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值