日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

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

JSON是JavsScript對象符號。

下面是一個簡單的JSON格式

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

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

JSON還可以有數組的形式,如下:

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

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

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

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

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

{

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

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

}

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

這就是JSON的基本形式。

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

1.最基礎的解析

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

{"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();

}

結果如下:

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

2.解析數組

下面解析如下的Json數據:

[{"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();

}

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

下面是效果圖:

3.包含對象的對象解析

下面我解析如下的Json數據:

{

"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.解析數組

下面解析如下的Json數據:

[{"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里的數據時數組,數組里是對象

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

項目工程下載。

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

前 Amazon Robotics 高管出任全球生產戰(zhàn)略部負責人,助力公司擴張 休斯敦, April 01, 2026 (GLOBE NEWSWIRE) -- 具身 AI 領域新一代領軍企業(yè)?Persona AI 今...

關鍵字: VI RS AN AI

上海2026年3月30日 /美通社/ -- 今年,美孚1號與保時捷共同迎來雙方全球戰(zhàn)略合作的三十周年。為了紀念這一里程碑式的時刻,在剛剛落幕的IMSA美孚1號賽百靈12小時耐力賽中,保時捷963賽車身披三十周年紀念涂裝馳...

關鍵字: 保時捷 發(fā)動機 AN BSP

杭州2026年3月30日 /美通社/ -- 2026年3月27日,DEKRA德凱杭州新辦公室喬遷剪彩儀式在濱江區(qū)順利舉行。DEKRA德凱集團亞太區(qū)高級副總裁、中國大...

關鍵字: 可持續(xù)發(fā)展 ROM NI AN

北京和東京2026年3月30日 /美通社/ -- 百奧賽圖(北京)醫(yī)藥科技股份有限公司(以下簡稱"百奧賽圖",SSE: 688796;HKEX: 02315),一家以創(chuàng)新技術驅動新藥研發(fā)的國際性生物技...

關鍵字: AN ADC 模型 IO

北京2026年3月26日 /美通社/ -- 2026年3月21日至23日,實驗醫(yī)學領域的年度盛會“創(chuàng)之聲”第十一屆中國實驗醫(yī)學大會(CPCEM)及第二十三屆中國國際檢驗醫(yī)學暨輸血儀器試劑博覽會(CACLP)在廈門舉行。作...

關鍵字: 防護 AN AC MIDDOT

憑借AI驅動創(chuàng)新、可量化客戶影響力及行業(yè)領先的商業(yè)化卓越表現獲此殊榮 新澤西州伯克利高地2026年3月26日 /美通社/ -- 作為生命科學行業(yè)AI優(yōu)先數據分析解決方案的全...

關鍵字: ST OS AN BSP

上海2026年3月26日 /美通社/ -- 3月19日,荷蘭交通部(以下簡稱"RDW")技術服務總經理Bodil van den Berg、型式批準機構總...

關鍵字: 汽車技術 AN 汽車產業(yè) 中國汽車

由Dell Technologies和NVIDIA提供技術支持的多租戶云產品,支持在混合云和多云環(huán)境中實現更安全、可擴展的AI部署。 基于NVIDIA多實例GPU構建的Cognizant專有分片GPU技術,助力...

關鍵字: AN NI AI FACTORY

西班牙巴塞羅那2026年3月13日 /美通社/ --?在MWC 2026期間,GlobalData首席分析師Andy Hicks發(fā)布了《Reinventing Voice: A Converged, AI-Enabled...

關鍵字: GLOBAL AI AN 網絡

新澤西州蒂內克2026年3月12日 /美通社/ -- Cognizant(納斯達克股票代碼:CTSH)發(fā)布最新研究顯示,尋求采用人工智能的企業(yè)普遍傾向選擇IT服務公司,例如“AI Builder”公司。這是一種通過設計和...

關鍵字: 人工智能 NI AN COM
關閉