www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] JSON與XML一樣都是數(shù)據(jù)格式,JSON的數(shù)據(jù)格式比XML更小。這里主講JSON。JSON是JavsScript對象符號。下面是一個簡單的JSON格式{"name":"zhangsan","age":22,"address":"太原

 JSON與XML一樣都是數(shù)據(jù)格式,JSON的數(shù)據(jù)格式比XML更小。這里主講JSON。

JSON是JavsScript對象符號。

下面是一個簡單的JSON格式

{"name":"zhangsan","age":22,"address":"太原"}

這就是一個對象,里面的值key是冒號前面的類容,value是冒號后面的類容。

JSON還可以有數(shù)組的形式,如下:

[{"name":"zhangsan","age":22,"address":"太原"},

{"name":"lisi","age":20,"address":"黃岡"},

{"name":"wangwu","age":21,"address":"武漢"}]

在中括號里全都是對象,這種對象的個數(shù)沒限制,對象里是鍵值對。

在JSON對象中還可以有對象,如下:

{

"name":"zhangsan","age":22,

"address":{"country":"中國","province":"山西","city":"太原"}

}

這就是說address key是一個對象。

這就是JSON的基本形式。

首先下載解析JSON需要的Jar包 下載。這是Google提供解析JSON的開源的Json Jar包。

1.最基礎(chǔ)的解析

這種解析式最普遍的,根據(jù)JSON的格式來解析,我來解析如下的JSON數(shù)據(jù):

{"name":"zhangsan","age":22,"address":"太原"}

首先

String s="{"name":"zhangsan","age":22,"address":"太原"}";

這里使用反斜杠來使用雙引號。

JsonReader reader=new JsonReader(new StringReader(s));

聲明一個JsonReader對象,將String s傳入。

try {

JsonReader reader=new JsonReader(new StringReader(data));

reader.beginObject();

while(reader.hasNext())

{

String key=reader.nextName();

if("name".equals(key))

{

System.out.println(reader.nextString());

}

if("age".equals(key))

{

System.out.println(reader.nextInt());

}

if("address".equals(key))

{

System.out.println(reader.nextString());

}

}

reader.endObject();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

結(jié)果如下:

開始解析的時候調(diào)用reader.beginObject();結(jié)束的時候調(diào)用reader.endObject().應(yīng)為一個對象里可能有很多的鍵值對,所以要使用while循環(huán),當對象里的鍵值對都循環(huán)完了的話reader.hasNext()方法返回false。reader.nextXXX()獲得你所要的值,XXX為類型。

2.解析數(shù)組

下面解析如下的Json數(shù)據(jù):

[{"name":"zhangsan","age":22,"address":"太原"},

{"name":"lisi","age":20,"address":"黃岡"},

{"name":"wangwu","age":21,"address":"武漢"}]

如下代碼:

try {

JsonReader reader=new JsonReader(new StringReader(data));

reader.beginArray();

while(reader.hasNext())

{

reader.beginObject();

while(reader.hasNext())

{

String key=reader.nextName();

if("name".equals(key))

{

System.out.println(reader.nextString());

}

if("age".equals(key))

{

System.out.println(reader.nextInt());

}

if("address".equals(key))

{

System.out.println(reader.nextString());

}

}

reader.endObject();

}

reader.endArray();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

根據(jù)這個Json的數(shù)據(jù)結(jié)構(gòu),我先解析數(shù)組,所以開始就reader.beginArray();當然還要reader.endArray();同樣使用reader.hasNext()來判斷數(shù)組是否都解析完了。

下面是效果圖:

3.包含對象的對象解析

下面我解析如下的Json數(shù)據(jù):

{

"name":"zhangsan","age":22,

"address":{"country":"中國","province":"山西","city":"太原"}

}

廢話不多說先來代碼:

try {

JsonReader reader=new JsonReader(new StringReader(data));

reader.beginObject();

while(reader.hasNext())

{

String key=reader.nextName();

if("name".equals(key))

{

System.out.println(reader.nextString());

}

if("address".equals(key))

{

reader.beginObject();

while(reader.hasNext())

{

String theKey=reader.nextName();[!--empirenews.page--]

if("country".equals(theKey))

{

System.out.println(reader.nextString());

}

if("province".equals(theKey))

{

System.out.println(reader.nextString());

}

if("city".equals(theKey))

{

System.out.println(reader.nextString());

}

}

reader.endObject();

}

}

reader.endObject();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

都給解析出來了。

1.解析一個對象

可以直接從Json中將隊形解析出來,這個Json必須是一個Json對象,如下:

{"name":"zhangsan","age":22,"address":"太原"}

它只是一個對象。

我新建一個類,生成get和set方法,如下:

package com.zhycheng;

publicclass Human {

String name,address;

int age;

public String getName() {

return name;

}

publicvoid setName(String name) {

this.name = name;

}

publicint getAge() {

return age;

}

publicvoid setAge(int age) {

this.age = age;

}

public String getAddress() {

return address;

}

publicvoid setAddress(String address) {

this.address = address;

}

}

然后使用如下代碼直接解析

String s="{"name":"zhangsan","age":22,"address":"太原"}";

Gson g=new Gson();

Human h=g.fromJson(s, Human.class);

System.out.println(h.getName()+";"+h.getAge()+";"+h.getAddress());

2.解析數(shù)組

下面解析如下的Json數(shù)據(jù):

[{"name":"zhangsan","age":22,"address":"太原"},

{"name":"lisi","age":20,"address":"黃岡"},

{"name":"wangwu","age":21,"address":"武漢"}]

代碼如下:

String s="[{"name":"zhangsan","age":22,"address":"太原"},{"name":"lisi","age":20,"address":"黃岡"},{"name":"wangwu","age":21,"address":"武漢"}]";

Type type=new TypeToken>(){}.getType();

Gson g=new Gson();

LinkedList ll=g.fromJson(s, type);

for(int i=0;i

{

Human h=(Human)ll.get(i);

System.out.println(h.getName()+","+h.getAge()+","+h.getAddress());

}

在這里要注意:

1.Json里的數(shù)據(jù)時數(shù)組,數(shù)組里是對象

2.泛形一定要用,否則出錯

項目工程下載。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

澳大利亞墨爾本2025年9月9日 /美通社/ -- 在墨爾本舉行的第十四屆世界商會大會(World Chambers Congress)上,Epitome Global創(chuàng)始人兼全球董事總經(jīng)理Jan Lambrechts向...

關(guān)鍵字: AN AI GLOBAL PI

伊斯坦布爾2025年9月9日 /美通社/ -- 作為全球最大規(guī)模的家居和消費技術(shù)盛會,IFA Berlin再次匯聚行業(yè)領(lǐng)袖,展示前瞻性創(chuàng)新,旨在滿足并引領(lǐng)不斷變化的消費者需求。 在這個行業(yè)的關(guān)鍵時刻,Beko自豪地展示了...

關(guān)鍵字: 智能家電 AI ADAPTIVE AN

新加坡獲選為重慶2025世界智能產(chǎn)業(yè)博覽會主賓國,進一步鞏固兩國長期戰(zhàn)略合作伙伴關(guān)系 今年新加坡展館匯聚12家創(chuàng)新科技、數(shù)字貿(mào)易、智慧城市領(lǐng)域企業(yè),包括Accred...

關(guān)鍵字: 新加坡 SI AN 數(shù)據(jù)安全

-DXC通過初創(chuàng)企業(yè)合作推動汽車與制造業(yè)AI創(chuàng)新 初創(chuàng)企業(yè)Acumino、CAMB.AI與GreenMatterAI合作將AI創(chuàng)新推向市場 合作源于DXC與STARTUP AUTOBAHN的伙伴關(guān)系 弗吉尼亞州阿什...

關(guān)鍵字: 汽車 AI AN AC

無錫2025年8月29日 /美通社/ -- 2025年8月27日,正值中國與瑞士建交75周年這一歷史性時刻,在北京隆重舉辦的中瑞商業(yè)大獎頒獎典禮上,作為中瑞經(jīng)貿(mào)合作的標桿企業(yè),布勒憑借在創(chuàng)新研發(fā)和數(shù)字化轉(zhuǎn)型領(lǐng)域的卓越表現(xiàn)...

關(guān)鍵字: 解碼 數(shù)字化 AN SMART

-Neel Pandya推出Climaty AI,助推營銷新時代 阿聯(lián)酋迪拜2025年8月27日 /美通社/ -- Climaty AI是一家由代理式AI驅(qū)動的全球氣候營銷科技(CliMarTech)公司,由Neel...

關(guān)鍵字: AN AI 創(chuàng)始人 GROUP

北京2025年8月22日 /美通社/ -- 8月20日,國際獨立第三方檢測、檢驗和認證機構(gòu)德國萊茵TÜV(簡稱"TÜV萊茵")受邀出席...

關(guān)鍵字: 研究驅(qū)動 AN 數(shù)字經(jīng)濟 電子電氣

-Delska在拉脫維亞新建的10兆瓦數(shù)據(jù)中心獲得Tier III設(shè)計認證 拉脫維亞里加2025年8月20日 /美通社/ -- 北歐數(shù)據(jù)中心運營商Delska即將啟用的EU...

關(guān)鍵字: 數(shù)據(jù)中心 TI 冷卻系統(tǒng) AN

- ‘Match Chat' AI助手可在所有254場單打比賽期間及結(jié)束后實時回答問題 - 升級版IBM SlamTracker將提供實時獲勝概率預(yù)測,而‘Key Poin...

關(guān)鍵字: IBM AI PEN AN

-Cognizant正在籌辦全球最大規(guī)模的氛圍編程活動,以提升數(shù)千名員工的AI素養(yǎng) 為抓住人工智能經(jīng)濟將創(chuàng)造的巨大機遇,Cognizant與Lovable、Windsurf、Cursor、Gemini Code Ass...

關(guān)鍵字: 編程 NI AN PI
關(guān)閉