首頁  >  文章  >  Java  >  Java如何對Json資料進行解析

Java如何對Json資料進行解析

黄舟
黄舟原創
2017-08-23 10:44:311989瀏覽

下面小編就為大家帶來一篇使用Java進行Json資料的解析(物件陣列的相互嵌套)。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

這段時間我們在做一個英文翻譯軟體的小小小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資料進行解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn