使用Gson+泛型制作一个序列化和反序列化的工具类
一、概述
本节给出一个封装好的使用Gson实现对象、List集合的序列化与反序列化的工具类。
1.Book.java类是一个javaben,里面定义了书本id和书本名称
2.JsonUtil.java是工具类
3.Test.java是测试类
二、具体实例
1.Book.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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集合对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 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方法进行测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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.具体的输出截图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探