07.03 Gson筆記和乾貨

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 字符串.

  • 實現步驟 :
  1. 獲得需要的對象:
Student stu = new Student();
stu.setName("張三");
stu.setAge(18);
stu.setSex(true);
  1. 格式化

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的取值:
  1. JsonPrimitive : value 的 取值對應 java
int,double,float,long,short,boolean,char,byte,String,BigDecimal,BigInteger,Number
1
  1. JsonObject : value 的 取值對應 java 的 Object 對象.
  2. 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>() {}.getType());/<string>

  • Json 節點 的解析
  • json:
{'flag':true,'data':{'name':'張三','age':18,'sex':true}} 
  • 步驟 :
  1. 獲得 解析者

JsonParser parser = new JsonParser();

  1. 獲得 根節點元素
JsonElement element = parser.parse(json);
  1. 根據 文檔判斷根節點屬於 什麼類型的 Gson節點對象

// 假如文檔 顯示 根節點 為對象類型

// 獲得 根節點 的實際 節點類型

JsonObject root = element.getAsJsonObject();

  1. 取得 節點 下 的某個節點的 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筆記和乾貨


分享到:


相關文章: