GSON实现Java对象与JSON格式对象相互转换的完全教程

GSON实现Java对象与JSON格式对象相互转换的完全教程

什么是GSON

GSON是Google提供的用来在Java对象和JSON数据之间进行序列化和反序列化的Java库。GSON可以将Java对象转化为JSON字符串,也可以将JSON字符串转化为相应的Java对象。

准备工作

在使用GSON之前,您需要做以下准备工作:

  1. 下载GSON库

可以通过Maven或Gradle将GSON库添加到项目的依赖项中,或者从GSON项目的GitHub页面下载JAR文件。

  1. 导入GSON库

将下载的JAR文件或库包含在项目中。

使用GSON将Java对象转换为JSON字符串

下面的代码演示了如何将Java对象转换为JSON字符串:

import com.google.gson.Gson;

public class Person{
    private String name;
    private int age;
}

Person person = new Person();
person.setName("John");
person.setAge(30);

Gson gson = new Gson();
String json = gson.toJson(person);

System.out.println(json);

输出结果:

{"name":"John","age":30}

使用GSON将JSON字符串转换为Java对象

下面的代码演示了如何将JSON字符串转换为Java对象:

import com.google.gson.Gson;

String json = "{\"name\":\"John\",\"age\":30}";

Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);

System.out.println(person.getName());
System.out.println(person.getAge());

输出结果:

John
30

示例一

下面的示例将演示如何将具有嵌套对象的Java对象转换为JSON字符串,并将JSON字符串转换为相应的Java对象。在这个示例中,有一个Bicycle类,它包含一个Wheel类。

import com.google.gson.Gson;

public class Wheel {
    private int size;

    public Wheel(int size) {
        this.size = size;
    }
}

public class Bicycle {
    private String brand;
    private Wheel wheel;

    public Bicycle(String brand, Wheel wheel) {
        this.brand = brand;
        this.wheel = wheel;
    }
}

Wheel wheel = new Wheel(20);
Bicycle bicycle = new Bicycle("Giant", wheel);

Gson gson = new Gson();
String json = gson.toJson(bicycle);

System.out.println(json);

Bicycle bicycleFromJson = gson.fromJson(json, Bicycle.class);
System.out.println(bicycleFromJson.getBrand());
System.out.println(bicycleFromJson.getWheel().getSize());

输出结果:

{"brand":"Giant","wheel":{"size":20}}
Giant
20

示例二

下面的示例将演示如何将具有列表的Java对象转换为JSON字符串,并将JSON字符串转换为相应的Java对象。在这个示例中,有一个Student类,它有一个name属性和一组course属性。

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

public class Course {
    private String name;
    private int score;

    public Course(String name, int score) {
        this.name = name;
        this.score = score;
    }
}

public class Student {
    private String name;
    private List<Course> courses;

    public Student(String name) {
        this.name = name;
        this.courses = new ArrayList<Course>();
    }

    public void addCourse(Course course) {
        this.courses.add(course);
    }
}

Student student = new Student("Tom");
student.addCourse(new Course("math", 90));
student.addCourse(new Course("english", 80));

Gson gson = new Gson();
String json = gson.toJson(student);

System.out.println(json);

Student studentFromJson = gson.fromJson(json, Student.class);

System.out.println(studentFromJson.getName());
for (Course course : studentFromJson.getCourses()) {
   System.out.println(course.getName() + ": " + course.getScore());
}

输出结果:

{"name":"Tom","courses":[{"name":"math","score":90},{"name":"english","score":80}]}
Tom
math: 90
english: 80

完整示例代码如下:

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:GSON实现Java对象与JSON格式对象相互转换的完全教程 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java 泛型总结(二):泛型与数组

    Java 泛型总结(二):泛型与数组 在 Java 中,泛型和数组是两个不同的概念,但它们之间的关系比较微妙,需要仔细理解。本篇文章将讲解 Java 泛型和数组的关系,旨在帮助读者更深入理解 Java 泛型的本质。 泛型与数组的不同 泛型是编译期检查的,而数组是运行期检查的。这意味着,我们可以编写泛型代码来确保模板类型的安全性,一旦编译通过,就可以放心使用。…

    Java 2023年5月26日
    00
  • Java实现的生成二维码统计扫描次数并转发到某个地址功能详解

    Java实现的生成二维码统计扫描次数并转发到某个地址功能详解 简介 二维码是一种可被扫描识别的矩阵条形码。在现代生活中,二维码广泛应用于各种场景中,例如商业推广、门禁系统、实名认证、票务管理等等。Java语言可以用来生成二维码,并通过统计扫描次数等功能对二维码进行管理。 实现步骤 以下是使用Java生成二维码并统计扫描次数并转发到某个地址的具体步骤: 步骤一…

    Java 2023年5月20日
    00
  • Spring Security基本架构与初始化操作流程详解

    Spring Security基本架构与初始化操作流程详解 什么是Spring Security Spring Security是一个基于Spring框架的安全解决方案,主要解决应用程序的认证和授权问题。它提供了一整套安全服务,并可在Web请求级和方法调用级处理身份验证和授权。 Spring Security基本架构 Spring Security的基本架构…

    Java 2023年5月20日
    00
  • Shell脚本把文件从GBK转为UTF-8编码

    下面我将详细讲解如何通过Shell脚本将GBK编码的文件转为UTF-8编码的文件。 1. 确认文件编码格式 在进行转码操作之前,需要先确认文件的编码格式。可以通过file命令查看文件的编码格式,例如: $ file test.txt test.txt: UTF-8 Unicode text 如果文件的编码格式为GBK,则需要进行转码。 2. 安装iconv …

    Java 2023年6月1日
    00
  • 基于JSP的动态网站开发技术

    基于JSP的动态网站开发技术攻略 1. 什么是JSP JSP(JavaServer Pages) 是一种动态网页开发技术,它与 PHP、ASP 等技术类似,是一种基于服务端的网页解决方案。JSP 内嵌Java代码和特定的标签,可以用来生成动态网页,并和Java EE技术(Web容器、JDBC等)一起使用实现强大的功能。因此,JSP可以完美地和Java本身以及…

    Java 2023年6月15日
    00
  • Hibernate save() saveorupdate()的用法

    Hibernate是一个流行的Java ORM框架,在Hibernate中,save()和saveOrUpdate()被广泛用于将Java对象映射到数据库中。在本文中,我们将讨论Hibernate中的save()和saveOrUpdate()方法及其用法,以明确它们的区别和使用场景。 save()方法 Hibernate中的save()方法将新的持久化对象保…

    Java 2023年5月20日
    00
  • Spring Security基于JWT实现SSO单点登录详解

    Spring Security基于JWT实现SSO单点登录详解 什么是单点登录(SSO)? 单点登录(SSO)指的是用户只需要一次登录,就可以访问多个应用系统。在传统的系统中,我们需要为每一个系统单独注册,单独登录,对于用户来说,这是一种不便。 JWT是什么? JWT(JSON Web Token)是一种用于身份验证的开放标准。它是由 IETF(Intern…

    Java 2023年5月20日
    00
  • Java Apache Commons报错“ObjectCreationException”的原因与解决方法

    “ObjectCreationException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 无效的对象:如果对象无效,则可能会出现此错误。在这种情况下,需要检查对象以解决此问题。 无效的配置:如果配置无效,则可能会出现此错误。在这种情况下,需要检查配置以解决此问题。 以下是两个实例: 例1 如果对象无效,则可以尝试检…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部