自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

操縱JsonObject的方法

開發(fā) 后端
Json對(duì)象是Name Value對(duì)(即子元素)的無序集合,相當(dāng)于一個(gè)Map對(duì)象。JsonObject類是bantouyan-json庫對(duì)Json對(duì)象的抽象,提供操縱Json對(duì)象的各種方法。本文就介紹如何操縱JsonObject類。

Json對(duì)象是Name Value對(duì)(即子元素)的無序集合,相當(dāng)于一個(gè)Map對(duì)象。JsonObject類是bantouyan-json庫對(duì)Json對(duì)象的抽象,提供操縱Json對(duì)象的各種方法。本文就介紹如何操縱JsonObject類。

一、創(chuàng)建JsonObject實(shí)例

創(chuàng)建JsonObject實(shí)例有兩類方法,一是利用超類Json的靜態(tài)方法parseJsonText、parseJsonReader與parseJavaMap獲取JsonObject實(shí)例,二是直接利用JsonObject類的構(gòu)造方法創(chuàng)建JsonObject實(shí)例。

根據(jù)傳入的參數(shù)不同,parseJsonText返回一個(gè)JsonObject實(shí)例或JsonArray實(shí)例,利用parseJsonText方法的示例代碼如下:

Java代碼

 

 

  1. String jsonText = "{'name1': 'value1', 'name2': 'value2'}";     
  2. JsonObject jobj = (JsonObject)Json.parseJsonText(jsonText);    

 

parseJsonText返回的是一個(gè)Json類變量,所以要使用強(qiáng)制類型轉(zhuǎn)換。

parseJsonReader負(fù)責(zé)從Reader類型參數(shù)內(nèi)讀取Json文本流,然后轉(zhuǎn)換為Json實(shí)例,與parseJsonText一樣,返回值需要強(qiáng)制類型轉(zhuǎn)換。

方法parseJavaMap直接返回JsonObject變量,不用類型轉(zhuǎn)換,示例代碼如下:

Java代碼

 

 

  1. HashMap map = new HashMap();     
  2. map.put("nameA""valueA");      
  3. map.put("nameB""valueB");      
  4. JsonObject jobj = Json.parseJavaMap(map);   

 

如果Map內(nèi)有復(fù)雜的對(duì)象需要解析,可以用parseJavaMap的重載版本parseJavaMap(Map, JsonParser)來處理(JsonParser的使用參考解析Json——Json類的靜態(tài)方法的第五部分)。

JsonObject類的構(gòu)造函數(shù)有四個(gè)重載版本:JsonObject()、JsonObject(int)、JsonObject(Map)與JsonObject(Map, JsonParser)。不帶參數(shù)與帶整型參數(shù)的重載版本都構(gòu)造一個(gè)空的JsonObject實(shí)例,所不同的是帶整型參數(shù)的重載版本能夠指定JsonObject初始容量的大小,以避免不必要的重新分配內(nèi)存。重載版本JsonObject(Map)與JsonObject(Map, JsonParser)的使用類似于Json類的靜態(tài)方法parseJavaMap。

二、給JsonObject添加子元素

給JsonObject實(shí)例添加子元素調(diào)用方法add或addAll。bantouyan-json庫規(guī)定,方法add與addAll都不能添加Name為null的子元素,也不能添加與已有子元素Name相同的子元素,否則會(huì)拋出異常。

方法add有七種重載版本,方法addAll有三種重載版本,分別使用于不同的情況。

三、變更JsonObject子元素的Value

要改變JsonObject子元素的Value可以調(diào)用方法set與setAll。這兩個(gè)方法都忽略Name為null的子元素,如果存在Name相同的子元素,則更改這個(gè)子元素的Value,否則添加一個(gè)新的子元素。

方法set也有七種重載版本,addAll有三種重載版本,分別適用于不同的情況。

四、獲取與檢測(cè)JsonObject子元素

JsonObject的每個(gè)子元素的Value都是一個(gè)Json實(shí)例,可以用方法get(String)獲取這個(gè)實(shí)例。至于這個(gè)實(shí)例的類型,除可以調(diào)用方法getType()獲得外,還可以通過JsonObject對(duì)方法getType的重載版本getType(String)獲取(String為子元素的Name)。

利用方法getString(String)可以獲取指定Name的子元素Value的字符串值,如果子元素的Value是JsonPrimitive實(shí)例,則返回這個(gè)實(shí)例值對(duì)應(yīng)的字符串(不帶引號(hào)與轉(zhuǎn)義符),否則返回對(duì)應(yīng)的標(biāo)準(zhǔn)Json文本。

如果想獲取子元素的Value所對(duì)應(yīng)的boolean、double、long、JsonArray與JsonObject類型的值,則可以分別調(diào)用方法getBoolean(String)、getDouble(String)、getLong(String)、getJsonArray(String)與getJsonObject(String)。與getString方法不一樣的是當(dāng)子元素的Value無法轉(zhuǎn)換為相應(yīng)的類型時(shí)會(huì)拋出異常。方法canToBoolean(String)、canToDouble(String)、canToLong(String)、canToJsonArray(String)與canToJsonObject(String)可以檢測(cè)是否可以轉(zhuǎn)換為對(duì)應(yīng)的類型。

以特定的類型獲取子元素的Value時(shí),方法canToXXX返回true并不表明子元素的Value就是所測(cè)試的類型。根據(jù)bantouyan-json庫設(shè)計(jì),如果子元素的Value的類型是INTEGER,則可以得到對(duì)應(yīng)的double類型的值,如果類型時(shí)String,對(duì)于部分Value,可以得到對(duì)應(yīng)的boolean、long、double類型的值。

五、確定JsonObject子元素是否存在

在獲取子元素前可能無法確定JsonObject是否包含指定Name的子元素,要確定子元素存在,請(qǐng)調(diào)用方法containsName(String)。

六、刪除JsonObject子元素

刪除JsonObject的子元素調(diào)用方法remove(String),參數(shù)為要?jiǎng)h除的子元素的Name。

七、獲取JsonObject子元素相關(guān)的集合

與Map一樣,JsonObject也是由無序的Name Value對(duì)構(gòu)成,為此,JsonObject實(shí)現(xiàn)了三個(gè)方法用于獲取子元素相關(guān)的集合。

entrySet(),返回由子元素的Name Value對(duì)構(gòu)成的集合。

nameSet(),返回由子元素的Name構(gòu)成的集合。

values(),返回由子元素的Value構(gòu)成的集合。

【編輯推薦】

  1. JSON數(shù)據(jù)在J2ME下的構(gòu)造和解析
  2. 深入了解J2ME Polish+Eclipse配置過程
  3. 探究J2ME中cookie庫的管理
  4. 術(shù)語匯編 J2ME 3D技術(shù)簡(jiǎn)介
  5. 解析Linux下如何用eclipse搭建J2ME開發(fā)環(huán)境
責(zé)任編輯:金賀 來源: JavaEye博客
相關(guān)推薦

2010-12-22 11:19:09

Java字節(jié)代碼

2020-05-14 09:42:15

數(shù)據(jù)操縱網(wǎng)絡(luò)阻擊數(shù)據(jù)泄露

2022-06-06 14:56:03

機(jī)器人算法模型

2012-02-08 14:24:35

HibernateJava

2014-10-09 09:34:38

ATM惡意軟件Tyupkin

2020-10-31 21:47:06

Python數(shù)據(jù)結(jié)構(gòu)開發(fā)

2009-08-06 18:10:06

C#數(shù)據(jù)庫事務(wù)

2013-07-10 09:26:27

亞馬遜Web服務(wù)云計(jì)算創(chuàng)新云計(jì)算市場(chǎng)情況

2009-09-03 16:17:12

C#操縱系統(tǒng)菜單

2021-07-08 15:48:51

僵尸網(wǎng)絡(luò)IoTDDoS攻擊

2011-03-04 11:08:46

ADO.NET數(shù)據(jù)庫

2021-09-13 07:23:53

KafkaGo語言

2025-02-20 14:34:18

2021-06-15 09:10:41

漏洞網(wǎng)絡(luò)安全程序員

2020-09-28 13:57:35

惡意軟件黑客網(wǎng)絡(luò)攻擊

2012-12-31 10:15:15

2009-11-11 16:15:04

ADO.NET操縱數(shù)據(jù)

2024-11-01 14:56:09

2018-10-09 10:35:00

2016-12-26 18:51:34

AndroidJavascriptJSONObject
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)