用JAVA進行Json資料解析(對象數組的相互嵌套)

來源:互聯網
上載者:User

標籤:通過   ror   方法   輸出   json   sys   對象數組   basic   相關   

這段時間我們在做一個英語翻譯軟體的小小小APP,涉及到了對Json資料的解析,所以特地來總結一下!

假設我們要對如下資料進行解析,其實在平時,返回的Json資料是很亂的,很難分清資料的關係,這是經過相關工具美化後的結果

{
  "translation": [
    "愛"
  ],
  "basic": {
    "us-phonetic": "l?v",
    "phonetic": "l?v",
    "uk-phonetic": "l?v",
    "explains": [
      "n. 戀愛;親愛的;酷愛;喜愛的事物",
      "vt. 喜歡;熱愛;愛慕",
      "vi. 愛",
      "n. (Love)人名;(英)洛夫"
    ]
  },
  "web": [
    {
      "value": [
        "愛情",
        "愛",
        "愛"
      ],
      "key": "Love"
    },
    {
      "value": [
        "無盡的愛",
        "藍色生死戀",
        "不了情"
      ],
      "key": "Endless Love"
    },
    {
      "value": [
        "早戀",
        "青春期戀愛",
        "初戀"
      ],
      "key": "puppy love"
    }
  ]
}

         我們把資料定義為一個字串,加入逸出字元之後就成了這樣,有點亂是吧,所以我們根據分析就好啦。

         Json資料說白了就是對象和數組的相互嵌套,那麼我們開始吧!
   String st = "{\"translation\":[\"愛\"],\"basic\":{\"us-phonetic\":\"l?v\",\"phonetic\":\"l?v\",\"uk-phonetic\":\"l?v\",\"explains\":[\"n. 戀愛;親愛的;酷愛;喜愛的事物\",\"vt. 喜歡;熱愛;愛慕\",\"vi. 愛\",\"n. (Love)人名;(英)洛夫\"]},\"query\":\"love\",\"errorCode\":0,\"web\":[{\"value\":[\"愛情\",\"愛\",\"愛\"],\"key\":\"Love\"},{\"value\":[\"無盡的愛\",\"藍色生死戀\",\"不了情\"],\"key\":\"Endless Love\"},{\"value\":[\"早戀\",\"青春期戀愛\",\"初戀\"],\"key\":\"puppy love\"}]}";


        JSONObject str = JSONObject.fromObject(st);                 //json資料的最外層肯定是一個對象,參數為字串
                                               //對象str又分為3部分:translation,basic,web  
        if(str.has("translation")){        
            JSONArray tr = str.getJSONArray("translation");               //translation是一個json數組
            for(int i = 0 ;i<tr.size();i++){                      //對數組元素進行遍曆
                System.out.println(tr.getString(i));              //因為元素的值是String類型的所以忽的值的方法是getString(index)
            }
        }

                                                                                                                                                               //basic中有數組也有元素
        if(str.has("basic")){                            
            JSONObject us = str.getJSONObject("basic");               //對元素進行解析,並輸出元素的值
            System.out.print("美:[" + us.getString("us-phonetic") + "]\t");    
            
            JSONObject uk = str.getJSONObject("basic");
            System.out.print("英:[" + us.getString("uk-phonetic") + "]\n");
            
            JSONObject basic = str.getJSONObject("basic");              //先獲得basic對象
            JSONArray explain = basic.getJSONArray("explains");            //再獲得basic對象下的explains數組 
            for(int i = 0;i<explain.size(); i++){                   //對數組元素進行遍曆
                System.out.println(explain.getString(i));
            }     
        }
        if(str.has("web")){                               //web是一個數組,每個數組元素又是三個Json對象
            System.out.println("拓展:");                      
            JSONArray web = str.getJSONArray("web");               
            for(int i = 0; i<web.size() ; i++ ){                   //但是對象中又嵌套著數組
                String t = web.getString(i);                   //遍曆過程將web數組元素賦給String型變數
                JSONObject we = JSONObject.fromObject(t);             //通過String又得到每個元素的對象
                if(we.has("key")){            
                    System.out.print(we.getString("key")+"\t");        //得到對象中的元素
                }
                if(we.has("value")){                      
                    JSONArray value = we.getJSONArray("value");
                    for(int x = 0 ; x<value.size() ;x++ ){          //遍曆對象中嵌套的數組
                        System.out.print(value.getString(x));       //得到數組元素的值
                        if(x<value.size()-1){
                            System.out.print(";");
                        }
                    }
                }
                System.out.println();
            }
        }

到這裡就解析完啦!

用JAVA進行Json資料解析(對象數組的相互嵌套)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.