天天看点

java gson序列化_使用Gson+泛型制作一个序列化和反序列化的工具类

一、概述

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

java gson序列化_使用Gson+泛型制作一个序列化和反序列化的工具类