資料交換中最常用的資料格式--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中有一個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方法内的時候,系統會自動添加需要添加的/,具體方法為:
- 先輸入 Book b = g.fromJson();
- 填充表示字元串的"" Book b = g.fromJson("");
-
複制Json對象
{“id”:“100”,“name”:“bookname”,“info”:“bookinfo”}
粘貼到雙引号内,系統将自動充為
Book b = g.fromJson({“id”:“100”,“name”:“bookname”,“info”:“bookinfo”}");
-
添加需要轉成的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);