天天看點

Json 的三種解析方式Json簡介Json的三種解析方式

資料交換中最常用的資料格式--Json 的三種解析方式

  • Json簡介
    • Json基礎文法
      • 普通格式
      • 舉例
      • 數組格式
      • 舉例
  • Json的三種解析方式
    • 原生解析
      • 舉例
    • Gson解析
      • 舉例
      • 補充java對象轉Json方法
    • FastJson解析
      • 舉例
      • 補充java對象轉Json方法

Json簡介

Json(JavaScript Object Notation JS)中文翻譯為對象簡譜 , 是一種輕量級的資料交換格式。

Json基礎文法

一個對象, 由一個大括号{}表示。括号中描述對象的屬性,通過鍵值對來描述對象的屬性 (可以了解為大括号中包含的是一個個的鍵值對)。

普通格式

鍵與值之間使用冒号連接配接, 多個鍵值對之間使用逗号分隔。

鍵值對的鍵 應使用引号引住 (通常Java解析時, 鍵不使用引号會報錯, 而JS能正确解析)。

鍵值對的值, 可以是JS中的任意類型的資料 。

舉例

{

“name”:“張三”,

“info”:“一個人類”

}

數組格式

在JSON格式中可以與對象互相嵌套,一個數組用方括号[]表示

[元素1,元素2…]

注意:在Json轉java對象時,對象包含的數組部分會被轉成ArrayList而非數組

舉例

{

“id”:“100”,

“name”:“張三”,

“info”:“一個人類”,

“friends”:[“friend1”,“friend2”,“friend3”]

}

Json的三種解析方式

原生解析

原生解析即通過JSONObject系統自帶的解析方式解析json資料。

舉例

Person person = new Person();
jsonString = "{“id”:“100”,“name”:“張三”,“info”:“一個人類”}"
JSONObject jsonObject = new JSONObject(jsonString);
JSONObject personObject = jsonObject.getJSONObject("person");
person.setId(personObject.getInt("id"));
person.setName(personObject.getString("name"));
person.setAddress(personObject.getString("info"));
           

Gson解析

Gson解析需要下載下傳gson.jar包,可以在百度搜尋或者在github上下載下傳,之後通過File-Project Structure-Project Setting找到Modules 和Libraries,選擇找到需要導入jar包的對應工程,再點選+,在本地找到gson的jar檔案然後導入,如果最後對應的jar包是這種可打開的狀态則表示已經導入成功了。

Json 的三種解析方式Json簡介Json的三種解析方式

舉例

假設Json中有一個book類,我們利用Json隻需要兩行代碼就可以解析成功。

Gson g = new Gson();
Book b = g.fromJson("{\"id\":\"100\",\"name\":\"bookname\",\"info\":\"bookinfo\"}",Book.class);
           

原Json的資訊如下{“id”:“100”,“name”:“bookname”,“info”:“bookinfo”}

由于fromJson需要傳入一個字元串,在"的前面需要加上轉義字元/,否則将會出現錯誤。

在idea中複制粘貼json對象到fromJson方法内的時候,系統會自動添加需要添加的/,具體方法為:

  1. 先輸入 Book b = g.fromJson();
  2. 填充表示字元串的"" Book b = g.fromJson("");
  3. 複制Json對象

    {“id”:“100”,“name”:“bookname”,“info”:“bookinfo”}

    粘貼到雙引号内,系統将自動充為

    Book b = g.fromJson({“id”:“100”,“name”:“bookname”,“info”:“bookinfo”}");

  4. 添加需要轉成的class對象

    Book b = g.fromJson("{“id”:“100”,“name”:“bookname”,“info”:“bookinfo”}",Book.class);

如果我們想獲得book對象的id屬性可以使用 b.getId()方法 獲得。

補充java對象轉Json方法

Gson g = new Gson();
Book b = new Book("100","bookname","bookinfo");
String s = g.toJson(b);
           

FastJson解析

FastJson同樣需要導入fastjson的Jar包,導入流程同gsonJar包導入流程。

舉例

//轉換成book對象
Book b1 = JSON.parseObject("{\"id\":\"1005\",\"info\":\"It's a popular novel\",\"name\":\"Story book\"}",Book.class);
//轉換成ArrayList
ArrayList<String> stringArrayList = (ArrayList<String>)JSON.parseArray("[\"123\",\"456\",\"789\"]",String.class);
           

補充java對象轉Json方法

Book book = new Book("1002","Story book","It's a popular novel");
String json = JSON.toJSONString(book);