Android之JSON全面深入解析與使用

2021-07-25 17:57:04 字數 2365 閱讀 6350

在安卓開發中 對於json串的解析 是伺服器返回的資料極其常見的一種方式, 那麼對於json的普通用法在這裡就不再做介紹,

下面給介紹的是 json 更深入的 研究

json 的解析工具 分為 兩種 一種是 json解析 , 一種是 gson 解析

利用 json解析 最常用的 就是 getint , getstring

下面我們就來分析一下 getint 的 原始碼

//getint原始碼

public

intgetint(string key) throws jsonexception catch (exception var4)

}

//getstring 原始碼

public string getstring(string key) throws jsonexception else

}

通過 上訴 原始碼 可以 得出乙個 很方便的 結論 就是 可以判斷 伺服器返回來的json 字段 是屬於 什麼 型別 可以根據原始碼 的出

如 getstring 原始碼 中的 這段 ** 

字段 的例項 是屬於 字串

if(object instanceof

string) else

對於post請求,傳引數時有時會傳乙個json資料。jsonobject等提供了對應的方法。

//外層obj物件

jsonobject obj = new jsonobject();

//user物件

jsonobject user = new jsonobject();

//寫入對應屬性

user.put("name","張三");

user.put("age","18");

user.put("isman","男");

//將user物件寫入到外層obj中

obj.put("user",user);

system.out.println(obj);

輸出結果為

}

opt 替代 get

在上面使用中,我們通過get***()獲取相應值。但是,會發現其侷限性很多,尤其是 當沒有需要獲取的 字段 的時候 很容易就拋異常,

比如其他型別轉字串型別丟擲異常

當需要的字段沒有時,丟擲異常。

需要我們try…catch去捕獲。而opt***()對此進行了優化。

看一下opt針對如上問題的解決:

jsonobject obj = new jsonobject(json);//最外層的jsonobject物件

jsonobject user = obj.optjsonobject("user");

string name = user.optstring("name");

//整形轉字串

string age = user.optstring("age");

boolean isman = user.optboolean("isman");

//預設值,如果沒有該欄位,則會返回預設值

string *** = user.optstring("***","男");

system.out.println("name:"+name+"\nage:"+age+"\nisman:"+isman+"\n***:"+***);

輸出結果為

name:張三

age:18

isman:true

***:男

使用optstring()可以將整形轉化為字串。而對於***,因為該欄位沒有,會為其付預設值。解決了丟擲異常的問題。

optstring的原始碼

// optstring   預設呼叫了optstring(key, ""); 

public string optstring(string key)

//如果是null,返回預設值,否則呼叫tostring方法返回

public string optstring(string key, string defaultvalue)

public

boolean

optboolean(string key)

//實質呼叫get方法,如果丟擲異常,則賦預設值

public

boolean

optboolean(string key, boolean defaultvalue) catch (exception var4)

}

json 解析利器 之

gsonformat:

Android開發之json解析

現在分析下把我難倒了好幾天的乙個bug,就是json的解析。用到的api 獲得的json 1 16 query good 17 errorcode 0,18 web 19,27,3543 44 通過觀察json發現,既有大括號,又有中括號。1 payload 2 payload q content ...

Android進步之十一 Json解析

json資料格式,在android中廣泛應用於客戶端和網路通訊。參考文件 解析方法 jsonobject demojson new jsonobject jsonstring string url demojson.getstring url 2 解析object之二 解析方法 jsonobject...

Android全面理解Context

context在android中的作用不言而喻,當我們訪問當前應用的資源,啟動乙個新的activity的時候都需要提供context,而這個context到底是什麼呢,這個問題好像很好回答又好像難以說清楚。從字面意思,context的意思是 上下文 或者也可以叫做環境 場景等,儘管如此,還是有點抽象...