嵌套的JsonObject与JSONArray的取值---JSON中嵌套JSONArray

在复杂的JSON数据的格式中,往往会对JSON数据进行嵌套,这样取值会比之前的取值稍微复杂一点,但是只要思路清晰,其实取法还是一样的。就跟if else语句一样,如果if中套if,if中再套if,写的规范了还行,要是代码格式不规范,那我们肯定也看着麻烦。所以啊,对于json嵌套,只要记住符号“:”前是键,符号后是值,大括号成对找,一层层剥开,就清楚了。 举个例子说明,如下:

{
        "resultcode":"200",
        "reason":"成功的返回",
        "result":{
        "company":"顺丰",
        "com":"sf",
        "no":"575677355677",
        "list":[
            {
            "datetime":"2013-06-25 10:44:05",
            "remark":"已收件",
            "zone":"台州市"
            },
            {
            "datetime":"2013-06-25 11:05:21",
            "remark":"快件在 台州 ,准备送往下一站 台州集散中心 ",
            "zone":"台州市"
            }
        ],
        "status":1
        },
        "error_code":0
}

获取方式

 1 package com.json;
 2
 3 import net.sf.json.JSONArray;
 4 import net.sf.json.JSONObject;
 5
 6 public class JsonObjectAndJsonArrayDemo {
 7     public static void main(String[] args){
 8         //复杂的json数据
 9         String jsonStr = "{\"resultcode\":\"200\",\"reason\":\"成功的返回\",\"result\":{\"company\":\"顺丰\",\"com\":\"sf\","
10                 + "\"no\":\"575677355677\",\"list\":[{\"datetime\":\"2013-06-25 10:44:05\",\"remark\":\"已收件\",\"zone\":\"台州市\"},"
11                 + "{\"datetime\":\"2013-06-25 11:05:21\",\"remark\":\"快件在 台州 ,准备送往下一站 台州集散中心 \",\"zone\":\"台州市\"}],\"status\":1},"
12                 + "\"error_code\":0}";
13         JSONObject json = JSONObject.fromObject(jsonStr); //得到整个json串
14         System.out.println("resultcode:"+json.getString("resultcode"));  //根据key得到value:200
15         System.out.println("reason:"+json.getString("reason"));  //根据key得到value:成功的返回
16
17         //当遇到result时,也是将它当成一个整体串
18         System.out.println("company:"+JSONObject.fromObject(json.getString("result")).getString("company"));
19         System.out.println("com:"+JSONObject.fromObject(json.getString("result")).getString("com"));
20         System.out.println("no:"+JSONObject.fromObject(json.getString("result")).getString("no"));
21
22         //当遇到再次嵌套时,此时的list是一个JSONArray,所以需要将其当作数组的形式处理,其实还是一个串
23         //get(i)以下标为主,里面的东西,其实也是一个json的形式数据,你可以不看外面怎么嵌套,按道理只当成单单一个json串处理即可
24         System.out.println("list(0).datetime:"+JSONObject.fromObject(JSONArray.fromObject(JSONObject.fromObject(json.getString("result")).getString("list")).get(0)).getString("datetime"));
25
26         System.out.println("list(0).remark:"+JSONObject.fromObject(JSONArray.fromObject(JSONObject.fromObject(json.getString("result")).getString("list")).get(0)).getString("remark"));
27
28         System.out.println("list(0).zone:"+JSONObject.fromObject(JSONArray.fromObject(JSONObject.fromObject(json.getString("result")).getString("list")).get(0)).getString("zone"));
29
30         System.out.println("list(1).datetime:"+JSONObject.fromObject(JSONArray.fromObject(JSONObject.fromObject(json.getString("result")).getString("list")).get(1)).getString("datetime"));
31
32         System.out.println("list(1).remark:"+JSONObject.fromObject(JSONArray.fromObject(JSONObject.fromObject(json.getString("result")).getString("list")).get(1)).getString("remark"));
33
34         System.out.println("list(1).zone:"+JSONObject.fromObject(JSONArray.fromObject(JSONObject.fromObject(json.getString("result")).getString("list")).get(1)).getString("zone"));
35
36         System.out.println("status:"+JSONObject.fromObject(json.getString("result")).getString("status"));
37
38         System.out.println("reason:"+json.getString("error_code"));
39     }
40 }

摘自:JSON4:嵌套的JsonObject与JSONArray的取值

2017-12-07   09:57:13

时间: 2024-09-29 02:27:41

嵌套的JsonObject与JSONArray的取值---JSON中嵌套JSONArray的相关文章

java json字符串转JSONObject和JSONArray以及取值

import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JsonTest { public static void main(String[] args) { String joStr = "{name:\"张三\",age:\"20\"}"; //将json字符串转化为JSONObject JSONObject jsonObject = JSONObje

Jsonobject 类getInteger函数取值异常

产品实验局环境同事发现分布图与实际业务对不上,因为页面展示流量较大的RTSP,客户并没有相关APP业务.起初以为是前端业务逻辑出问题了: 查看前端数据库查询代码,逻辑十分简单,从数据库中获取app字段的值,然后对应app字典,前端展示: APP_DICT = get_app_dict() result = {"list": {}} if len(data) != 0: for i in range(len(data)): if data[i][1] in APP_DICT: resul

python re.findall(rule,data),根据左右边界取值url中参数的值

import re ''' 取值postid,左边界"postid=",右边界"&" ''' url="http://wwww.baidu.com/aspx?postid=6232&actiontip='保存成功'" postid=re.findall(r"postid=(.*?)&",url)[0] print(postid) def findall_data(data,LB=""

springboot中返回值json中null转换空字符串

在实际项目中,我们难免会遇到一些无值.当我们转JSON时,不希望这些null出现,比如我们期望所有的null在转JSON时都变成“”“”这种空字符串,那怎么做呢? Jackson中对null的处理 1 @Configuration 2 public class JacksonConfig { 3 @Bean 4 @Primary 5 @ConditionalOnMissingBean(ObjectMapper.class) 6 public ObjectMapper jacksonObjectM

解决ScrollView中嵌套Listview,Listview中嵌套Listview显示不完整和滑动冲突的问题

在一个滑动控件或者是布局里面,添加另外一个可以滑动的控件,通常会造成一些莫名其妙的问题.今天主要介绍在工作中遇到的,在ScrollView布局中嵌套Listview显示不正常,和在Listview中嵌套Listview的滑动冲突的问题. 1.ScrollView布局中嵌套Listview显示不正常的解决方案 目前来说,解决这个问题有好几种解决方案,这里只介绍其中两种比较简单易行的其中两种. (1)自定义一个Listview,继承自Listview,代码如下: public class ListV

shell 变量嵌套取值 ,判断变量为空

1.变量嵌套取值 bitrate1=100 numbers=1 eval echo \$bitrate${numbers} >tmpbit tmpbitrate=`cat tmpbit` 2.判断变量为空 if [ ! -n $bitrate ];then echo null;fi

list<实体类>互相嵌套和前台取值问题

list<实体类>嵌套list<实体类>,必须保证嵌套的实体类里面有这个list对象,把这个list<实体类>当做一个对象 这是需要解析的数据,并把这些数据封装成list<实体类>对象,传给前台 <root> <RETURN_CODE>0</RETURN_CODE> <RETURN_DESC>成功!</RETURN_DESC> <RETURN_INFO> <order_info&g

【jstl】List嵌套变量取值

<!-- 第一层循环HoleList --> <c:forEach items="${HoleList }" var="HoleList" varStatus="status">   <tr>    <!-- 直接取值 -->    <td>${HoleList.LINECUSTOMER}</td> <!-- 第二层循环WANCountBandwidthList --&

python 嵌套字典比较值,取值

#取值import types allGuests = {'Alice': {'apples': 5, 'pretzels': {'12':{'beijing':456}}}, 'Bob': {'ham sandwiches': 3, 'apple': 2}, 'Carol': {'cups': 3, 'apple pies': 1}} def dictget(dict1,obj,default=None): for k,v in dict1.items(): if k == obj: prin