最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Java進行Json數(shù)據(jù)的解析(對象數(shù)組的相互嵌套)

 更新時間:2017年08月23日 08:12:19   投稿:jingxian  
下面小編就為大家?guī)硪黄褂肑ava進行Json數(shù)據(jù)的解析(對象數(shù)組的相互嵌套)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

這段時間我們在做一個英語翻譯軟件的小小小APP,涉及到了對Json數(shù)據(jù)的解析,所以特地來總結(jié)一下!

假設我們要對如下數(shù)據(jù)進行解析,其實在平時,返回的Json數(shù)據(jù)是很亂的,很難分清數(shù)據(jù)的關(guān)系,這是經(jīng)過相關(guān)工具美化后的結(jié)果

{
 "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"
 }
 ]
}

我們把數(shù)據(jù)定義為一個字符串,加入轉(zhuǎn)義字符之后就成了這樣,有點亂是吧,所以我們根據(jù)上圖分析就好啦。

Json數(shù)據(jù)說白了就是對象和數(shù)組的相互嵌套,那么我們開始吧!

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數(shù)據(jù)的最外層肯定是一個對象,參數(shù)為字符串
 //對象str又分為3部分:translation,basic,web 
  if(str.has("translation")){
 JSONArray tr = str.getJSONArray("translation");  //translation是一個json數(shù)組
 for(int i = 0 ;i<tr.size();i++){ //對數(shù)組元素進行遍歷
  System.out.println(tr.getString(i));  //因為元素的值是String類型的所以忽的值的方法是getString(index)
 }
  }

  //basic中有數(shù)組也有元素
  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數(shù)組 
 for(int i = 0;i<explain.size(); i++){ //對數(shù)組元素進行遍歷
  System.out.println(explain.getString(i));
 }  
  }
  if(str.has("web")){ //web是一個數(shù)組,每個數(shù)組元素又是三個Json對象
 System.out.println("拓展:");  
 JSONArray web = str.getJSONArray("web");  
 for(int i = 0; i<web.size() ; i++ ){ //但是對象中又嵌套著數(shù)組
  String t = web.getString(i); //遍歷過程將web數(shù)組元素賦給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++ ){ //遍歷對象中嵌套的數(shù)組
  System.out.print(value.getString(x));  //得到數(shù)組元素的值
  if(x<value.size()-1){
 System.out.print(";");
  }
 }
  }
  System.out.println();
 }
  }

到這里就解析完啦!

以上這篇使用Java進行Json數(shù)據(jù)的解析(對象數(shù)組的相互嵌套)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

南投市| 安康市| 神池县| 伊金霍洛旗| 安吉县| 车险| 剑阁县| 云梦县| 广西| 北票市| 新泰市| 五莲县| 阿拉善左旗| 锦州市| 东台市| 湖州市| 天气| 南汇区| 古田县| 胶南市| 枣庄市| 铜山县| 左云县| 洛川县| 青神县| 禹城市| 和林格尔县| 海伦市| 宜兰县| 阳春市| 桑植县| 龙井市| 灵武市| 德化县| 确山县| 泰来县| 改则县| 长宁区| 满洲里市| 西畴县| 和龙市|