GSON
- JSON 介紹
- Gson 下載
- Gson 解析 和 格式化
- Gson 格式化
- Gson 解析
Json 介紹
Json 全稱 JavaScript Object Natation ,用來描述數據結構,它是基於純文本的數據格式,是一種輕量級的數據交換格式。廣泛應用於 服務端 與 客戶端 的數據交互。
- 格式
- Json 以 key-value的形式存儲數據;
- Key的取值 為 String 類型;
- Value的取值 為 String,boolean,Number,數組,Object,null;
- Json 串 以 { 開始, 以 } 結尾;
- Json 串中 數組 是 以 [ 開始, 以 ] 結尾;
- Json 串中 Object 是 以 { 開始, 以 } 結尾;
- 案例
- 基本類型 :
{
"name": "張三",
"age": 18,
"sex": true
}
- 數組類型 :
[
{
"name": "張三",
"age": 18,
"sex": true
},
{
"name": "李四",
"age": 19,
"sex": false
}
- 對象嵌套 :
{
"name": "teacher",
"computer": {
"CPU": "intel7",
"disk": "512G"
},
"students": [
{
"name": "張三",
"age": 18,
"sex": true
},
{
"name": "李四",
"age": 19,
"sex": false
}
]
}
- 樹狀結構
- json 字符串相當於一個倒掛的樹, key 相當於 樹的節點.
Gson 下載
- 網址 http://mvnrepository.com/artifact/com.google.code.gson/gson
- 選擇版本,進入下載jar.
Gson 格式化 和 解析
Gson 格式化
將 java 對象 格式化為 Json 字符串.
- 實現步驟 :
- 獲得需要的對象:
Student stu = new Student();
stu.setName("張三");
stu.setAge(18);
stu.setSex(true);
- 格式化
Gson gson = new Gson();
//將 對象 轉化成 json 字符串
String json = gson.toJson(stu)
Gson 解析
將 Json 字符串 解析 成 java 對象.
- Gson 的 節點對象:
- JsonElement : 所有的節點 都是 JsonElement 對象.
- JsonPrimitive : 基本的 數據類型的 節點 對象, JsonElement 的子類.
- JsonNull : 代表 空節點 對象,即 有 key,value 為空,JsonElement 的子類.
- JsonObject : 對象 數據類型的 節點 對象, JsonElement 的 子類.
- JsonArray : 數組 數據類型的 節點 對象, JsonElement 的 子類.
- JsonElement的取值:
- JsonPrimitive : value 的 取值對應 java
int,double,float,long,short,boolean,char,byte,String,BigDecimal,BigInteger,Number
1
- JsonObject : value 的 取值對應 java 的 Object 對象.
- JsonArray : value 的 取值對應 java 的 List 及其子類對象.
- Json的解析成 java 對象
- json:
{'name':'張三','age':18,'sex':true}
1
2
- 代碼:
Gson gson = new Gson();
// 將json 轉化成 java 對象
Student stu = gson.fromJson(json, Student.class);
- Json 解析 成 List
- json:
[{'name':'小1','age':18,'sex':true},{'name':'小2','age':19,'sex':false},{'name':'小3','age':20,'sex':true},{'name':'小4','age':21,'sex':false},{'name':'小5','age':22,'sex':true}]
- 代碼:
Gson gson = new Gson();
// 將 json 轉化 成 List泛型
List<student> stus = gson.fromJson(json, new TypeToken<list>>() {}.getType());/<list>/<student>
- Json 解析 成 map
- json:
{'小3':{'name':'小3','age':20,'sex':true},'小4':{'name':'小4','age':21,'sex':false},'小5':{'name':'小5','age':22,'sex':true},'小1':{'name':'小1','age':18,'sex':true},'小2':{'name':'小2','age':19,'sex':false}}
- 代碼:
Gson gson = new Gson();
// 將 json 轉化 成 Map泛型
Map<string> map = gson.fromJson(json, new TypeToken/<string>
- Json 節點 的解析
- json:
{'flag':true,'data':{'name':'張三','age':18,'sex':true}}
- 步驟 :
- 獲得 解析者
JsonParser parser = new JsonParser();
- 獲得 根節點元素
JsonElement element = parser.parse(json);
- 根據 文檔判斷根節點屬於 什麼類型的 Gson節點對象
// 假如文檔 顯示 根節點 為對象類型
// 獲得 根節點 的實際 節點類型
JsonObject root = element.getAsJsonObject();
- 取得 節點 下 的某個節點的 value
// 獲得 flag 節點的值, flag 節點為基本數據節點
JsonPrimitive flagJson = root.getAsJsonPrimitive("flag");
// 基本節點取值
boolean flag = flagJson.getAsBoolean();
// 獲得 data 節點的值,data 節點為Object數據節點
JsonObject dataJson = root.getAsJsonObject("data");
// 將節點上的數據轉換為對象
Student stu = new Gson().fromJson(dataJson,Student.class);
趕緊拿小本本記下來吧!喜歡請點擊關注哦!
![Gson筆記和乾貨](http://p2.ttnews.xyz/loading.gif)
閱讀更多 火到沒朋友的大數據 的文章