zoukankan      html  css  js  c++  java
  • 嵌套的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

  • 相关阅读:
    致DBA:为什么你经常犯错,是因为你做的功课不够
    Hbase的shell命令学习
    mysql通过拷贝文件实现数据快速迁移实例
    项目领导力学习总结
    放权,从鞋柜开始
    不抱怨的世界
    定投我们自己
    mysql core文件的正确打开姿势
    2017小目标
    世界是有生命的(通向财富自由之路学习笔记十五)
  • 原文地址:https://www.cnblogs.com/angelye/p/7997678.html
Copyright © 2011-2022 走看看