一、概述
本节给出一个封装好的使用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.具体的输出截图
