天天看點

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+泛型制作一個序列化和反序列化的工具類