当前位置: 首页 > article >正文

Gson的用法详解_Gson如何进行进行序列化和反序列化

Gson 是一个流行的 Java 序列化/反序列化库,可以将 Java 对象和 JSON 字符串相互转换,并支持自定义序列化和反序列化过程。下面是使用 Gson 库进行序列化和反序列化的简单示例:

首先,需要在项目中引入 Gson 的依赖。例如,在 Maven 中可以添加以下依赖:

<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.7</version>
</dependency>

然后,在代码中创建一个 Gson 对象,可以使用其提供的 toJson()fromJson() 方法分别进行序列化和反序列化。例如,以下代码将一个 Java 对象序列化成 JSON 字符串:

// 创建一个 Java 对象
Person person = new Person();
person.setName("John");
person.setAge(30);// 将对象序列化成 JSON 字符串
Gson gson = new Gson();
String json = gson.toJson(person);System.out.println(json);
// 输出:{"name":"John","age":30}

在上面的代码中,我们创建了一个 Person 对象,并使用 Gson 对象的 toJson() 方法将其序列化成 JSON 字符串。序列化后的结果是一个包含 nameage 两个属性的 JSON 对象。

反过来,我们也可以使用 Gson 对象的 fromJson() 方法将 JSON 字符串反序列化成一个 Java 对象。例如,以下代码将前面序列化得到的 JSON 字符串反序列化成一个 Person 对象:

// 将 JSON 字符串反序列化成 Java 对象
Person person = gson.fromJson(json, Person.class);System.out.println(person.getName());  // 输出:John
System.out.println(person.getAge());   // 输出:30

在上面的代码中,我们使用 Gson 对象的 fromJson() 方法将前面序列化得到的 JSON 字符串反序列化成一个 Person 对象。fromJson() 方法接受两个参数,第一个参数是要反序列化的 JSON 字符串,第二个参数是反序列化后的对象的类型。在上面的代码中,我们将反序列化后的结果转型为 Person 类型,并输出其属性值。

需要注意的是,在使用 Gson 库进行序列化和反序列化时,需要注意序列化和反序列化的对象类型和属性名。如果对象中的属性名与序列化后的 JSON 字符串中的属性名不一致,那么需要使用 @SerializedName 注解来指定属性名。例如:

class Person {@SerializedName("full_name")private String name;// ... 其他属性和方法
}

在上面的代码中,我们使用 @SerializedName("full_name") 注解来指定 name 属性在序列化时使用的名称为 full_name。这样,在将 Person 对象序列化成 JSON 字符串时,name 属性的值将使用 full_name 作为属性名。

http://www.lryc.cn/news/2417797.html

相关文章:

  • python的符号lt和gt怎么输入_lt;lt;Python基础教程gt;gt;学习笔记 | 第04章 | 字典...
  • 科普:SMP系统是什么
  • RISC-V CPU+GPU+AI,Imagination创新解决方案带来了哪些惊喜?
  • WebShell
  • SpringSecurity(安全)基础
  • Oracle数据库CDB与PDB
  • ubuntu搜狗输入法
  • 日期操作类(DateFormat与SimpleDateFormat)的区别和使用详解
  • Java中Map详解
  • SQL中的like语句用法
  • 仓库管理WMS软件(Warehouse Management Software)百科解析
  • 在vue中使用CKEditor4富文本编辑器
  • Unity基础三: 什么是Shader
  • CIDR 基础知识
  • SHA1 算法加密技术核心思想
  • 详解Tensorboard及使用教程
  • Android Binder机制解析
  • 【传输层协议】 TCP UDP协议 解析(一)
  • FLOPs如何计算
  • 取拼音字头
  • VB 在Visio 2010 以编程方式创建子进程图
  • 根文件系统(二):busybox
  • 浅谈NBIOT
  • 全网最全python教程,从零到精通(学python有它就够必收藏)_python学习相关博客
  • 如何使用好google学术?
  • js刷新当前页面的5种方式
  • LNMP架构环境搭建(Linux+Nginx+Mysql+PHP)
  • 数组详细讲解
  • loki介绍
  • 正确配置安装和卸载Cygwin