一、概述
本節給出一個封裝好的使用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; /** * create by yangwei * on 2020-02-21 18:08 */ public class Book { public Book(){} private String id; /** * 加上@SerializedName注解后服務端api返回name、bookName、Name、bn時,客戶端都能夠拿到正確的值給name屬性。 */ @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; /** * 泛型解析工具類 * create by yangwei * on 2020-02-23 15:47 */ public class JsonUtil { /** * 將json字符串轉換為ArrayList * * @param jsonArray * @param clazz * @param <T> * @return */ public static <T> List<T> fromJsonToList(String jsonArray, Class<T> clazz) { List<T> 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; } /** * 將字符串轉換為Object對象 * * @param jsonObj * @param clazz * @param <T> * @return */ public static <T> T fromJsonToObject(String jsonObj, Class<T> clazz) { Gson gson = new Gson(); return gson.fromJson(jsonObj, clazz); } /** * 將Object對象轉換成為Json字符串 * * @param obj * @param <T> * @return */ public static <T> 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; /** * 測試json操作object的序列化和反序列化 * create by yangwei * on 2020-02-23 19:03 */ public class Test { public static void main(String[] args) { //准備數據 List<Book> 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<Book>集合 List<Book> 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.具體的輸出截圖