嵌套的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM