一、概述
本節給出一個封裝好的使用Gson實作對象、List集合的序列化與反序列化的工具類。
1.Book.java類是一個javaben,裡面定義了書本id和書本名稱
2.JsonUtil.java是工具類
3.Test.java是測試類
二、具體執行個體
1.Book.java
package com.yw.gsonlib;
import com.google.gson.annotations.SerializedName;
public class Book {
public Book(){}
private String id;
@SerializedName(value = "bookName",alternate = {"Name","bn"})
private String name;
public Book(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.JsonUtil.java工具類:使用此對象您可以把任意的可用對象轉換為json字元串,也可以把json字元串轉換為具體的對象或者List集合對象
package com.yw.gsonlib;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import java.util.ArrayList;
import java.util.List;
public class JsonUtil {
public static List fromJsonToList(String jsonArray, Class clazz) {
List list = new ArrayList<>();
Gson gson = new Gson();
JsonArray array = new JsonParser().parse(jsonArray).getAsJsonArray();
for (JsonElement obj : array) {
list.add(gson.fromJson(obj, clazz));
}
return list;
}
public static T fromJsonToObject(String jsonObj, Class clazz) {
Gson gson = new Gson();
return gson.fromJson(jsonObj, clazz);
}
public static String objectToJson(T obj) {
Gson gson = new Gson();
return gson.toJson(obj);
}
}
3.Test.java,使用main方法進行測試
package com.yw.gsonlib;
import java.sql.SQLSyntaxErrorException;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
//準備資料
List books = new ArrayList<>();
books.add(new Book("1","《深入Java虛拟機》"));
books.add(new Book("2","《大話資料結構》"));
//準備一個jsonarray字元串,ps:将泛型集合轉換為json字元串
String json = JsonUtil.objectToJson(books);
System.out.println("輸出泛型集合字元串:"+json);
//将字元串轉換為泛型的List集合
List bks = JsonUtil.fromJsonToList(json,Book.class);
System.out.println("booklist_begin");
for(Book b :bks){
System.out.println(b.getName());
}
System.out.println("booklist_end");
//将一個對象轉換為字元串
Book bk = new Book("1","《深入Android源代碼》");
String bkStr = JsonUtil.objectToJson(bk);
System.out.println("book:"+bkStr);
//講一個json字元串轉換為對象
Book bks1 = JsonUtil.fromJsonToObject(bkStr,Book.class);
System.out.println("列印book書名:"+bks1.getName());
}
}
4.具體的輸出截圖
