1. 程式人生 > >android json解析詳解(json手動解析)

android json解析詳解(json手動解析)

一 .json簡介 1)概念:json全稱是javaScript object Notation,是一種病輕量級的資料交換格式。 2)特點: 1.本質就是具有特定格式的字串 2,.json完全獨立於程式語言 3.json比xml資料傳輸的有效性要高出很多 二。json資料格式 1)整體結構: String json1="{“id”:“12”,“name”:“TOM”}"; String json2=''[{“id”:“12”,“name”:“TOM”},{“id”:“12”,“name”:“TOM”},{“id”:“12”,“name”:“TOM”}]" 2)json物件 1)json物件的結構: {key:value1,key:value2,} 2)key的資料結構型別:字串 3)value的資料型別:數值,字串,null,json陣列[] ,json物件{} 4:例子:{“id”:“12”,“name”:“TOM”} 3)json陣列 1)json陣列的結構 [value1,value2,value3] 2)value的資料型別:數值, 字串 null json陣列[] json物件{} 3)例子:[1, “ab”,[], {“n”:123, “b”:”abc”}] 三。json解析方向 1)將java物件(包含集合)轉換為json字串格式(在伺服器端應用) 2)將json格式字串轉換java物件(在客戶端應用) 3)json和java之間的轉換關係 json對應java物件轉換 json陣列和java物件構成的list對應 json解析技術 android原生解析 1)特點: 程式設計相對麻煩 2)資料之間轉換 (1)將json格式的字串{}轉換為Java物件 API: JSONObject(String json) : 將json字串解析為json物件 Xxx getXxx(String name) : 根據name, 在json物件中得到對應的Value Xxx optXxx(String name) : 根據name, 在json物件中得到對應的Value 注意: optXxx方法會在對應的key中的值不存在的時候返回一個空字串或者返回你指定的預設值,但是getString方法會出現空指標異常的錯誤。 測試資料: (2)將json格式的字串[]轉換為Java物件的List API: JSONArray(String json) : 將json字串解析為json陣列 int length() : 得到json陣列中元素的個數 Xxx getXxx(int index) : 根據下標得到json陣列中對應的元素資料 Xxx optXxx(int index) : 根據下標得到json陣列中對應的元素資料 注意: optXxx方法會在對應的key中的值不存在的時候返回一個空字串或者返回你指定的預設值,但是getString方法會出現空指標異常的錯誤。 測試資料: (3)複雜json資料解析 a) 測試資料: http://api.ds.lingshi.cccwei.com/?cid=625561&uid=0&tms=20160427085818&sig=36b291895c63dfc4&wssig=26637611c0c64fb7&os_type=3&version=24&channel_name=feibo&srv=2402&classify_id=32 b) GsonFormat工具生成物件類 見工具使用 c) 手動解析json資料 (4)特殊json資料解析 a) 測試資料 http://api.bilibili.com/online_list?_device=android&platform=android&typeid=13&sign=a520d8d8f7a7240013006e466c8044f7 b) 手動寫解析json資料的物件類 c) 手動解析json資料 2.Gson框架技術 1)特點:編碼簡潔,谷歌官方推薦 3)資料之間轉換 (1)將json格式的字串{}轉換為Java物件 API: fromJson(String json, Class<T> classOfT); 注意: 要求json物件中的key的名稱與java物件對應的類中的屬性名要相同 步驟 1)將Gson的jar包匯入到專案中 2)建立Gson物件 : Gson gson = new Gson(); 3)通過建立的Gson物件呼叫fromJson()方法,返回該JSON資料對應的Java物件: ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class); 測試資料: (2)將json格式的字串[]轉換為Java物件的List API: fromJson(String json, Type typeOfT); type 測試資料: 步驟 1)將Gson的jar包匯入到專案中 2)建立Gson物件 : Gson gson = new Gson(); 3)通過建立的Gson物件呼叫fromJson()方法,返回該JSON資料對應的Java集合: List<ShopInfo> shops = gson.fromJson(json, new TypeToken<List<ShopInfo>>() {}.getType()); (3)將Java物件轉換為json字串{} API: String toJson(Object src); 步驟 1)將Gson的jar包匯入到專案中 2)建立Gson物件 : Gson gson = new Gson(); 3)通過建立的Gson物件呼叫toJson()方法,返回json資料: ShopInfo shop = new ShopInfo(1, "鮑魚", 250.0, ""); String json = gson.toJson(shop); (4)將Java物件的List轉換為json字串[] API: String toJson(Object src); 步驟 1)將Gson的jar包匯入到專案中 2)建立Gson物件 : Gson gson = new Gson(); 3)通過建立的Gson物件呼叫toJson()方法,返回json資料: List<ShopInfo> shops = new ArrayList<>(); String json = gson.toJson(shops); 3。FastJson框架技術 1)特點:FasrJson是java語言程式設計寫的高效能完善json庫,他採用一種假定有序快速匹配演算法,把jsonParse的效能提升到極致,目前是java語言中最快的json庫 3)資料之間的轉換 (1)將json格式的字串{}轉換為Java物件 API: parseObject(String json, Class<T> classOfT); 步驟: 1)匯入fastjson的jar包 2)JSON呼叫parseObject()方法,獲取轉換後的Java物件 例如:ShopInfo shopInfo = JSON.parseObject(json, ShopInfo.class); 測試資料: (2)將json格式的字串[]轉換為Java物件的List API: List<T> parseArray(String json,Class<T> classOfT); 步驟: 1)匯入fastjson的jar包 2)JSON呼叫parseArray()方法,獲取轉換後的Java集合 例如:List<ShopInfo> shopInfos = JSON.parseArray(json, ShopInfo.class); 測試資料: (3)將Java物件轉換為json字串{} API: String toJSONString(Object object); 步驟: 1)匯入fastjson的jar包 2)JSON呼叫toJSONString()方法,獲取轉換後的json資料 例如: ShopInfo shopInfo = new ShopInfo(1, "鮑魚", 250.0, "baoyu"); String json = JSON.toJSONString(shopInfo); (4)將Java物件的List轉換為json字串[] API: String toJSONString(Object object); 步驟: 1)匯入fastjson的jar包 2)JSON呼叫toJSONString()方法,獲取轉換後的json資料 例如: List<ShopInfo> shops = new ArrayList<>(); ShopInfo baoyu = new ShopInfo(1, "鮑魚", 250.0, "baoyu"); ShopInfo longxia = new ShopInfo(2, "龍蝦", 251.0, "longxia"); shops.add(baoyu); shops.add(longxia); String json = JSON.toJSONString(shops); 5.GsonFormat工具使用教程 1_ GsonFormat工具使用 1.1_GsonFormat 1)開啟Android studio頁面,點選設定按鈕。   2)點選Plugins按鈕   3)在右側輸入框中輸入gsonformat,然後點選中間部位的Browse(必須在聯網情況下點選)   4)選擇GsonFormat,點選右側的安裝外掛
 5)重啟一下Android studio 6)在Android studio中建立一個類   7)在該類中同時按下alt+shift+s,並點選GsonFormat   8)將要解析的JSON字串貼上到GsonFormat
 9)點選OK   10
)這樣就將輸入的JSON資料轉換為了bean物件
public class TestGsonFormat { /**      * id : 2      * name : 大蝦 * price : 12.3      * imagePath : http://192.168.10.165:8080/L05_Server/images/f1.jpg      */ private int id; private String name; private double price; private String imagePath; public int getId() { return id;     }
public void setId(int id) { this.id = id;     } public String getName() { return name;     } public void setName(String name) { this.name = name;     } public double getPrice() { return price;     } public void setPrice(double price) { this.price = price;     } public String getImagePath() {
return imagePath;     } public void setImagePath(String imagePath) { this.imagePath = imagePath;     } }