在安卓開發中 對於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的意思是 上下文 或者也可以叫做環境 場景等,儘管如此,還是有點抽象...