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日

相关文章

  • spring中IOC控制反转依赖注入和new对象的区别说明

    下面是关于“spring中IOC控制反转依赖注入和new对象的区别说明”的完整攻略。 控制反转(IoC) 控制反转,即IoC(Inversion of Control),是一种将程序的控制权从调用者转移至被调用者的设计模式。在传统的编程模式中,客户端程序通常需要直接创建和管理对象,并通过其接口调用其方法来完成所需的业务逻辑。而在IoC模式中,对象的创建和管理…

    Java 2023年5月26日
    00
  • Spring MVC的参数绑定和返回值问题

    Spring MVC的参数绑定和返回值问题 在Spring MVC框架中,控制器的方法是用来处理请求的,而参数绑定和返回值则是掌握Spring MVC的关键所在。在这篇文章中,我们将详细讨论Spring MVC的参数绑定和返回值问题。 参数绑定 Spring MVC框架中的参数绑定是指将HTTP请求中的参数自动地绑定到控制器方法的参数中。具体而言,就是将HT…

    Java 2023年6月15日
    00
  • 值得收藏的SpringBoot 实用的小技巧

    值得收藏的SpringBoot实用的小技巧 在SpringBoot的开发过程中,有一些实用的小技巧可以提高开发效率,降低代码量和阅读难度。下面列举了一些值得收藏的小技巧。 1. 使用lombok简化实体类的编写 在实体类中,我们通常需要定义常量、属性、getter/setter、toString等方法,这些方法都是重复的代码,使用lombok可以自动生成这些…

    Java 2023年5月15日
    00
  • MyBatis传入多个参数时parameterType的写法

    MyBatis是一个Java持久层ORM框架,支持多种数据库,本质上是将SQL语句映射成Java方法调用,将Java对象映射成数据库中的记录。在使用MyBatis进行开发时,我们需要经常传入多个参数,来完成复杂的查询、插入、更新、删除等操作。这就需要我们正确设置parameterType参数来保证程序的正常运行。 1.传入多个参数时parameterType…

    Java 2023年5月20日
    00
  • Spring Boot如何优化内嵌的Tomcat示例详解

    针对这个问题,我来详细讲解一下Spring Boot如何优化内嵌的Tomcat,包含以下内容: 1. 优化内嵌Tomcat的原因 Spring Boot在内嵌Tomcat作为HTTP服务器的情况下,处理请求效率较低,主要原因是默认的Tomcat设置了大量的属性,例如发送缓存和接收缓存大小、最大线程数等,这些设置并不一定适用于所有应用程序。因此,我们需要对内嵌…

    Java 2023年5月19日
    00
  • Java方法参数传递如何实现

    Java 方法参数传递是值传递,即将实参的值复制一份传递给形参,方法中对形参的任何修改都不会影响实参的值。但对于引用类型变量,其实该变量存储的是对象在内存中的地址,这个地址也是一个值,因此传递引用类型变量时,实际上传递的是该地址值,也就是将内存中的对象地址复制一份传递给形参,此时形参和实参引用的是同一个对象,方法对形参所做的任何修改都会影响该对象的状态,从而…

    Java 2023年5月19日
    00
  • 详解ssh框架原理及流程

    下面提供有关“详解ssh框架原理及流程”的完整攻略。在本攻略中,我将逐步讲解ssh框架的基本原理和流程,并提供一些示例。 什么是SSH框架 SSH是Struts2, Hibernate和Spring三个框架的缩写。 SSH框架是一个完整的JavaEE应用框架,可以有效地管理Java应用程序,提高开发效率和应用程序可维护性。 SSH框架的工作流程 SSH框架的…

    Java 2023年5月20日
    00
  • 详解关于java文件下载文件名乱码问题解决方案

    关于Java文件下载时文件名乱码问题,可以使用以下方案解决: 方案一:使用Content-Disposition和URLEncoder 在Java中,可以使用Content-Disposition响应头设置文件下载时的文件名,再使用URLEncoder对文件名进行编码,如下: response.setHeader("Content-Disposit…

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