【題解】P1057 傳球遊戲
什麼是JSON
JavaScript Object Notation JS物件簡譜,是一種輕量級的資料交換格式。
格式
java
class Book{ private String name; private String info; public void setName(String name){ this.name = name; } public void setInfo(String info){ this.info= info; } }
js
var b = new Book(); b.setName("book-1"); b.setInfo("book-1-info");
xml
<book> <name>book-1</name> <info>book-2-info</info> </book>
json
一個物件, 由一個大括號表示
鍵與值之間使用冒號連線,多個鍵值對之間使用逗號分隔。
鍵值對的鍵應使用引號引住 (通常Java解析時,鍵不使用引號會報錯。 而JS能正確解析) 鍵值對的值,可以是JS中的任意型別的資料。
{
"name":"book-1",
"info":"book-1-info"
}
在JSON格式中可以與物件互相巢狀 [元素1,元素2...]
{
"name":"Tom",
"age":18,
"friends":["Jerry","Ben",{
"name":"Tony",
"age":19
}]
}
Java與JSON
java與json之間轉化的工具Gson、FastJson
Gson
maven依賴
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
Java物件 -> JSON
//獲取物件 Book b = BookDao.find(); //將物件轉化為json字串 String json = new Gson().toJson(b); //列印 System.out.println(json);
JSON字串->Java物件
在需要轉換Java物件的位置, 編寫如下程式碼:
物件 = new Gson().fromJson(JSON字串,物件型別.class);
Book book = new Gson().fromJson(json, Book.class);
System.out.println(book);
FastJson
maven依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
Java物件 -> JSON
String json=JSON.toJSONString(要轉換的物件)
Book b = BookDao.find(); String json=JSON.toJSONString(b); System.out.println(json);
JSON字串 -> Java物件
型別 物件名=JSON.parseObject(JSON字串, 型別.class);
或
List<型別> list=JSON.parseArray(JSON字串,型別.class);
Book book = JSON.parseObject(json, Book.class); System.out.println(book);