使用Gson函式庫把Java物件轉為json字串的方式如下。
本篇介紹是用Gson來轉換,或是你也可以改用Jaskson函式庫來轉。
在Maven專案的pom.xml
加入以下依賴。
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
使用Gson.toJson(Object src)
轉Java物件為json字串範例:
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Main {
public static void main(String[] args) {
User user = genUser(); // 取得Java物件
Gson gson = new Gson();
String jsonString = gson.toJson(user);
System.out.println(jsonString); // 印出沒排版的
Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();
String prettyJsonString = gsonPretty.toJson(user);
System.out.println(prettyJsonString); // 印出有排版的
}
private static User genUser() {
Item item1 = new Item();
item1.setId(101);
item1.setName("筆記型電腦");
item1.setQty(1);
Item item2 = new Item();
item2.setId(102);
item2.setName("24吋LCD螢幕");
item2.setQty(1);
List<Item> itemList1 = new ArrayList<>();
itemList1.add(item1);
itemList1.add(item2);
Order order1 = new Order();
order1.setId(100001);
order1.setItemList(itemList1);
List<Order> orderList1 = new ArrayList<>();
orderList1.add(order1);
User user = new User();
user.setId(1);
user.setName("肉豬");
user.setOrderList(orderList1);
return user;
}
}
class User {
private Integer id;
private String name;
private List<Order> orderList;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Order> getOrderList() {
return orderList;
}
public void setOrderList(List<Order> orderList) {
this.orderList = orderList;
}
// 省略getter/setter
}
class Order {
private Integer id;
private List<Item> itemList;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<Item> getItemList() {
return itemList;
}
public void setItemList(List<Item> itemList) {
this.itemList = itemList;
}
// 省略getter/setter
}
class Item {
private Integer id;
private Integer qty;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getQty() {
return qty;
}
public void setQty(Integer qty) {
this.qty = qty;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 省略getter/setter
}
印出結果如下。
{"id":1,"name":"肉豬","orderList":[{"id":100001,"itemList":[{"id":101,"qty":1,"name":"筆記型電腦"},{"id":102,"qty":1,"name":"24吋LCD螢幕"}]}]}
{
"id": 1,
"name": "肉豬",
"orderList": [
{
"id": 100001,
"itemList": [
{
"id": 101,
"qty": 1,
"name": "筆記型電腦"
},
{
"id": 102,
"qty": 1,
"name": "24吋LCD螢幕"
}
]
}
]
}
從以上結果來看,物件中的物件也會轉成json格式。
參考:
沒有留言:
張貼留言