1. 程式人生 > 實用技巧 >【題解】P1057 傳球遊戲

【題解】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);