首先的JSONObject和JSONArray是可以相互嵌套的。
在工作中我们常常需要把JSON字符串转化成的JSONObject或者是JSONArray。单你必须明白一点JSON字符串的形式一般来说第三方所给的JSON字符串是以下面的形式展开的
jsonStr="
{"returnCode":"000000","errorMsg":"","bankList":[{"bankId":"0102","bankName":"工商银行","openStatus":"1"}]}
"
就是说我们看到的是以“{”(开始的)那就直接转换成json对象,这个没得说!
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
System.out.println(jsonObject);
结果:{"returnCode":"000000","errorMsg":"","bankList":[{"bankId":"0102","bankName":"工商银行","openStatus":"1"}]}
是不是感觉没有区别,其实就是把jsonStr两边的冒号去掉了!
接下来我们就可以操作我们想获取的数据(获取银行的名字)
我们一下子能找到 “BANKNAME” 的位置,发现他在JSONObject的对象的 “bankList” 里面,而且 “bankList” 的值看起来是一个JSON数组,所以我们要把它先转化成jsonArray
分两步:
第一步:json对象的基本定义是“key”:“value”的这种形式,所以取出key =“bankList”的“价值”
String bankList = jsonObject.getString("bankList");
System.out.println(bankList);
结果:[{"bankId":"0102","bankName":"工商银行","openStatus":"1"}]
第二步:第一步获取的本质还是一个字符串,但是他是一个JSON数组形式的字符串,所以我们把他转成一个jsonArray
JSONArray jsonOblist = JSONArray.fromObject(bankList);
System.out.println(jsonOblist);
结果:[{"bankId":"0102","bankName":"工商银行","openStatus":"1"}]
这个和第一步看着结果没什么区别,其实还是把bankList两端的冒号去掉了!
接下来我们就可以操作jsonArray了,如果你会处理数组那你一定可以处理jsonArray,它们本质是一样的!
我们取出jsonOblist里面的第一个元素(其实这个jsonArray里面就只有一个json对象,如果多个json对象那我们就一定得循环了。像这种[{},{},{},...] )
JSONObject jsonObject1 =jsonOblist.getJSONObject(0) ;
System.out.println(jsonObject1);
结果:{"bankId":"0102","bankName":"工商银行","openStatus":"1"}
最后我们就可以取值了 (要清楚我们现在是操作jsonArray里面的第一个jsonObject,所以直接使用kay:value的这种取值方式!)
String bankId = (String) jsonObject1.get("bankId");
String bankName = (String) jsonObject1.get("bankName");
String openStatus= (String) jsonObject1.get("openStatus");
System.out.println("bankId:"+bankId+"\n"+"bankName:"+bankName+"\n"+"openStatus:"+openStatus);
结果: bankId:0102
bankName:工商银行
openStatus:1
结语:!其实JSON本身很简单你只要记住一点就很好操作一定要看看你操作当前JSON对象是一个JSONObject的还是jsonArray