標籤:.com sdn 速度 分析 系統 浮點 json對象 net key
本篇文章包括以下內容:
- JSON是什麼
- JSONObject的解析和儲存
- JSONObject的解析和儲存(抽象)
- JSONArray的解析和儲存
- 類比周邊加油站JSON資料實戰
JSON:JavaScript對象標記法(JavaScript Object Notation)
- JSON是儲存和交換文本資訊的文法
- JSON是輕量級的文本資料交換格式
- JSON獨立於語言和平台
- JSON具有自我描述性,更易理解
類似XML,比XML更小、更快、更易解析
- 沒有結束標籤
- 更短
- 讀寫的速度更快
- 使用數組
- 不使用保留字
JSON文法是JavaScript對象標記法文法的子集
- 資料在成對的名稱和數值中
- 資料由逗號分割
- 花括弧儲存對象
- 方括弧儲存資料
JSON值可以是
- 數字(整數或浮點數)
- 字串(在雙引號中)
- 邏輯值(true或false)
- 數組(在方括弧中)
- 對象(在花括弧中)
- null
JSONObject資料是用key-value來儲存的,中間使用冒號隔開,外層的花括弧表示一個對象
首先建立一個儲存資料的Bean類
下面我們使用將伺服器擷取的JSON資料放進一個JSON對象中,擷取其對象中的值
我們會碰到在一個JSON中嵌套有其他JSON對象,而這個嵌套的JSON對象中可以抽象出共同的屬性,看例子
這個時候我們就不用建立兩個對象了,建立一個對象抽取他們的屬性即可
首先建立一個儲存資料的Bean類
然後我們解析並儲存
通過遍曆JSONArray,剩下的跟JSONObject一樣,
這裡以周邊加油站資料為例,其解析步驟有
- 分析資料中的成員變數(花括弧為對象,方括弧為數組,使用List儲存數組)
- 根據分析後的結果,建立對應的對象
- 解析JSON資料、儲存JSON資料
大家可以嘗試一下自己寫解析,發現哪裡不對時,直接運行程式,系統會自動給你提示哪一行解析出錯的
一、分析資料中的成員變數
在JSON中,只有兩種文法,JSONObject(花括弧內)和JSONArray(方括弧內)
- JSONObject:可以理解為一個Map集合,通過get擷取value
- JSONArray:可以理解為一個數組,通過迴圈擷取對應的JSONObject
從上面的資料可以發現其中有五個JSON對象,一個JSON數組,從外到裡分析
對象1~4:
對象5:在最後面
二、根據分析後的結果,建立對應的對象(按循序從1~5)
在JSONObject中,左邊是屬性,右邊是值
如果右邊的值為一個JSONArray,則在對象中使用List< Object>來儲存,簡單的說就是對象中的List嵌套另一個對象
記住:花括弧用對象,方括弧用集合
根據上面的分析,建立第一個對象
建立第二個對象
建立第三個對象
建立第四個對象
建立第五個對象
三、解析JSON資料、儲存JSON資料
由於資料對象是一層嵌套一層的,這個解析思想跟樹的遍曆是一個道理,中老年服裝從外層->內層->外層,所以我們在解析內層的時候是需要邊解析邊儲存我們的資料
資料的解析和儲存
由於我們第四個對象是嵌套在第三個對象數組中的,所以在裡面再嵌套一層迴圈
由於第四個對象是同一性質的屬性,所以我們抽象成一個屬性為type和price的對象,其key是不確定的,需要自己通過keys遍曆來擷取value
接著我們輸出我們解析的結果
Android基礎——JSON資料的全方位解析