什麼是 JSON? 查一下 Wiki JSON 看看。簡單的說 JSON 的全名是JavaScript Object Notation,用途是資料交換。在這之前會用 XML 來做資料交換,可是當資料量很多時,XML 檔會很肥大,而 JSON 是輕量級的資料交換格式,著重在檔案小速度快。
既然稱做 Object Notation ,就是利用 JavaScritp 的物件格式來儲存資料,而物件是以左大括號{開始,右大括號}結束。並以key:value的方式來儲存資料,多組 key-value 則以逗號,分開,看起來就會是這樣:
{
"name":"Tom",
"age":50,
"male":true,
"address":null
}
key是一個字串;value則可以是字串、數值、物件、布林值、有序列表(Array),或null。Array的表示方式為,使用左中括號[開始,以右中括號]結束,每個值以逗號,分隔。看起來會這樣:
{
"phone":[
"04-2345678",
"0916123456"
]
}
更詳細的用法可以上 JSON 官網。
使用 GSON
你可以在 JSON 官網看到 JSON 的 Java 實作版本有好多種,其中一個就是 Google 的版本 GSON。可以查詢GSON-API,及使用手冊(User Guide)。這裡練習如何讓一個 Java 中的物件對 JSON 格式互相轉換。
假設我們有一個書籍類別 Book.java:
public class Book {
private String isbn;
private String name;
private int price;
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public Book(String _isbn, String _name, int _price) {
isbn = _isbn;
name = _name;
price = _price;
}
}
我們可以將它轉換成 JSON 物件,Jsondemo.java:
public static void main(String[] args) {
//======= Object to JSON =======
//建立Book物件
Book book = new Book("956-987236-1", "Java歷險記", 550);
//建立GSON物件
Gson gson = new Gson();
//將Book物件轉成JSON
String json = gson.toJson(book);
//把JSON格式的資料秀出來
System.out.println(json);
//輸出結果:{"isbn":"956-987236-1","name":"Java歷險記","price":550}
//======== JSON to Object ========
//將JSON格式的資料轉成物件
Book jbook = gson.fromJson(json, Book.class);
System.out.println(jbook.getIsbn());
System.out.println(jbook.getName());
System.out.println(jbook.getPrice());
}
總結
XML 仍是比 JSON 對於資料的描述較為嚴謹,但如果僅是做為資料傳遞的用途,以 JSON 格式來儲存,檔案會比較小,解析速度也比 XML 快。其他 JSON 實作還沒用過,選擇 GSON 只是國外討論區上的推薦,而 GSON 的文件也寫得很清楚,還滿容易上手的。
look look
回覆刪除thx for your effort
回覆刪除