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日

相关文章

  • Linux 安装JDK Tomcat MySQL的教程(使用Mac远程访问)

    Linux 安装 JDK Tomcat MySQL 的教程(使用 Mac 远程访问) 前置条件 基本的 Linux 操作知识 一台远程 Linux 服务器 本地 macOS 系统 安装 JDK 从官网下载jdk-8u251-linux-x64.tar.gz文件。(根据系统版本选择对应文件) 将下载的文件上传到服务器,并解压到 /usr/local/jdk8 …

    Java 2023年5月20日
    00
  • Java父线程(或是主线程)等待所有子线程退出的实例

    Java父线程(或是主线程)等待所有子线程退出的实例,可以通过使用Thread的join()方法实现。 join()方法的功能是等待该线程执行结束,即阻塞等待该线程结束,然后再继续执行下面的代码。我们可以利用该方法等待所有子线程执行结束,从而达到等待所有子线程退出的目的。 下面是一个完整的示例代码: public class MainThread { pub…

    Java 2023年5月19日
    00
  • Java遍历Map对象的四种方式

    下面我将为你详细讲解Java遍历Map对象的四种方式。 1. 使用Iterator遍历Map 使用Iterator遍历Map需要先通过Map的entrySet()方法获取entrySet,然后获取iterator进行遍历。示例代码如下: Map<String, Object> map = new HashMap<>(); map.pu…

    Java 2023年5月26日
    00
  • ES6学习笔记之新增数据类型实例解析

    ES6学习笔记之新增数据类型实例解析 前言 ES6是JavaScript语言的一个重要版本,它新增了许多新的特性和语法,让JavaScript变得更加强大和灵活。其中,新增了一些数据类型,让我们能够更加方便地处理数据。本文主要介绍ES6中新增的数据类型及其特点和用法。 新增数据类型 Symbol Symbol是ES6新增的一种基本数据类型,表示独一无二的值。…

    Java 2023年5月26日
    00
  • 深入理解JVM之Java对象的创建、内存布局、访问定位详解

    深入理解JVM之Java对象的创建、内存布局、访问定位详解 Java对象的创建 在Java中,创建对象最常见的方法就是使用关键字new,通过调用构造方法创建对象。在创建对象时,会先在堆内存中申请一块连续的内存空间,用于存储对象的属性。 Java对象的创建过程可以分为以下几个步骤: 加载类:在Java程序中使用到某个类时,JVM会首先查找并加载该类的类文件。 …

    Java 2023年5月26日
    00
  • JAVA实现简单系统登陆注册模块

    下面我将为你详细讲解如何实现一个JAVA语言的简单系统登陆注册模块。 准备工作 在开始实现登陆注册模块前,我们需要进行一些准备工作: 安装Java开发环境(JDK); 确定使用的开发工具,例如Eclipse、IntelliJ IDEA等; 创建Java项目; 下载并引入需要使用的第三方库,例如JDBC驱动,用于连接数据库。 数据库设计 在实现登陆注册模块前,…

    Java 2023年5月18日
    00
  • Sprint Boot @PathVariable使用方法详解

    @PathVariable是Spring Boot中的一个注解,它用于将URL路径变量映射到控制器方法的参数上。在使用Spring Boot开发Web应用程序时,@PathVariable是非常重要的。本文将详细介绍@PathVariable的作用和使用方法,并提供两个示例说明。 @PathVariable的作用 @PathVariable的作用是将URL路…

    Java 2023年5月5日
    00
  • Java这个名字的来历与优势

    Java是一种流行的编程语言,自1995年以来就一直被广泛采用。它的名字“Java”是由它的创造者詹姆斯·高斯林(James Gosling)与他的团队考虑出来的。Java这个名字的来历与优势的攻略可以分为以下几个方面: Java这个名字的来历 Java最初被命名为Oak。然而,后来由于已有一种名为Oak的编程语言,所以詹姆斯·高斯林和他的团队转而寻找新的名…

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