欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

這段時(shí)間我們?cè)谧鲆粋€(gè)英語翻譯軟件的小小小APP,涉及到了對(duì)Json數(shù)據(jù)的解析,所以特地來總結(jié)一下!

假設(shè)我們要對(duì)如下數(shù)據(jù)進(jìn)行解析,其實(shí)在平時(shí),返回的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": [
  "無盡的愛",
  "藍(lán)色生死戀",
  "不了情"
  ],
  "key": "Endless Love"
 },
 {
  "value": [
  "早戀",
  "青春期戀愛",
  "初戀"
  ],
  "key": "puppy love"
 }
 ]
}

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

Json數(shù)據(jù)說白了就是對(duì)象和數(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\":[\"無盡的愛\",\"藍(lán)色生死戀\",\"不了情\"],\"key\":\"Endless Love\"},{\"value\":[\"早戀\",\"青春期戀愛\",\"初戀\"],\"key\":\"puppy love\"}]}";


  JSONObject str = JSONObject.fromObject(st);  //json數(shù)據(jù)的最外層肯定是一個(gè)對(duì)象,參數(shù)為字符串
 //對(duì)象str又分為3部分:translation,basic,web 
  if(str.has("translation")){
 JSONArray tr = str.getJSONArray("translation");  //translation是一個(gè)json數(shù)組
 for(int i = 0 ;i<tr.size();i++){ //對(duì)數(shù)組元素進(jìn)行遍歷
  System.out.println(tr.getString(i));  //因?yàn)樵氐闹凳荢tring類型的所以忽的值的方法是getString(index)
 }
  }

  //basic中有數(shù)組也有元素
  if(str.has("basic")){ 
 JSONObject us = str.getJSONObject("basic");  //對(duì)元素進(jìn)行解析,并輸出元素的值
 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對(duì)象
 JSONArray explain = basic.getJSONArray("explains");  //再獲得basic對(duì)象下的explains數(shù)組 
 for(int i = 0;i<explain.size(); i++){ //對(duì)數(shù)組元素進(jìn)行遍歷
  System.out.println(explain.getString(i));
 }  
  }
  if(str.has("web")){ //web是一個(gè)數(shù)組,每個(gè)數(shù)組元素又是三個(gè)Json對(duì)象
 System.out.println("拓展:");  
 JSONArray web = str.getJSONArray("web");  
 for(int i = 0; i<web.size() ; i++ ){ //但是對(duì)象中又嵌套著數(shù)組
  String t = web.getString(i); //遍歷過程將web數(shù)組元素賦給String型變量
  JSONObject we = JSONObject.fromObject(t); //通過String又得到每個(gè)元素的對(duì)象
  if(we.has("key")){ 
 System.out.print(we.getString("key")+"\t");  //得到對(duì)象中的元素
  }
  if(we.has("value")){  
 JSONArray value = we.getJSONArray("value");
 for(int x = 0 ; x<value.size() ;x++ ){ //遍歷對(duì)象中嵌套的數(shù)組
  System.out.print(value.getString(x));  //得到數(shù)組元素的值
  if(x<value.size()-1){
 System.out.print(";");
  }
 }
  }
  System.out.println();
 }
  }

到這里就解析完啦!

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

相關(guān)文章

  • IDEA實(shí)現(xiàn)遠(yuǎn)程調(diào)試步驟詳解

    IDEA實(shí)現(xiàn)遠(yuǎn)程調(diào)試步驟詳解

    這篇文章主要介紹了IDEA實(shí)現(xiàn)遠(yuǎn)程調(diào)試步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 基于spring中的aop簡(jiǎn)單實(shí)例講解

    基于spring中的aop簡(jiǎn)單實(shí)例講解

    下面小編就為大家?guī)硪黄趕pring中的aop簡(jiǎn)單實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • springboot后端接收前端傳數(shù)組參數(shù)三種方法

    springboot后端接收前端傳數(shù)組參數(shù)三種方法

    這篇文章主要給大家介紹了關(guān)于springboot后端接收前端傳數(shù)組參數(shù)三種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java使用synchronized實(shí)現(xiàn)互斥鎖功能示例

    Java使用synchronized實(shí)現(xiàn)互斥鎖功能示例

    這篇文章主要介紹了Java使用synchronized實(shí)現(xiàn)互斥鎖功能,結(jié)合實(shí)例形式分析了Java使用synchronized互斥鎖功能簡(jiǎn)單實(shí)現(xiàn)方法與操作技巧,需要的朋友可以參考下
    2020-05-05
  • Spring自定義注解的實(shí)現(xiàn)與使用方式

    Spring自定義注解的實(shí)現(xiàn)與使用方式

    注解是Java中用于類、方法、參數(shù)、包的裝飾標(biāo)志,本身不具備功能,但可定義參數(shù),Java包含內(nèi)建注解和元注解,如@Target、@Retention等,描述注解的使用范圍和生命周期,Spring的AOP(面向切面編程)可以結(jié)合注解實(shí)現(xiàn)功能,如權(quán)限控制和日志記錄
    2024-09-09
  • 使用JPA主鍵@Id,@IdClass,@Embeddable,@EmbeddedId問題

    使用JPA主鍵@Id,@IdClass,@Embeddable,@EmbeddedId問題

    這篇文章主要介紹了使用JPA主鍵@Id,@IdClass,@Embeddable,@EmbeddedId問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Quarkus集成apollo配置中心

    Quarkus集成apollo配置中心

    這篇文章主要介紹了Quarkus集成apollo配置中心,文中詳細(xì)的講解了Quarkus的config構(gòu)成,以及apollo集成實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 舉例講解Java中do-while語句的使用方法

    舉例講解Java中do-while語句的使用方法

    這篇文章主要介紹了Java中do-while語句的使用方法例子,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • SpringBoot如何獲取Kafka的Topic列表

    SpringBoot如何獲取Kafka的Topic列表

    這篇文章主要介紹了SpringBoot如何獲取Kafka的Topic列表問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Activiti開發(fā)環(huán)境的搭建過程詳解

    Activiti開發(fā)環(huán)境的搭建過程詳解

    這篇文章主要介紹了Activiti開發(fā)環(huán)境的搭建過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論