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

完整示例代码如下:

阅读剩余 72%

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

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

相关文章

  • MyBatis SqlSource源码示例解析

    首先让我们来了解”MyBatis SqlSource源码”是什么。 MyBatis是一个流行的Java ORM框架,与Hibernate和JPA等ORM框架相比,它更加灵活和可定制,它可以根据不同的需求进行配置。MyBatis SqlSource源码实现了构建不同SQL Statement的功能。 接下来,我们将会提供两个示例,帮助你更好地理解MyBatis…

    Java 2023年6月1日
    00
  • 关于feign.codec.DecodeException异常的解决方案

    当使用Spring Cloud Feign调用外部服务时,如果接口返回的数据不能按照指定的数据类型进行反序列化,就会抛出feign.codec.DecodeException异常。那么,在实际开发过程中,我们如何解决这个异常呢? 下面是几种解决方案。 方案一:自定义错误解码器 我们可以定义一个自己的错误解码器,当外部服务返回的数据无法按照指定数据类型反序列化…

    Java 2023年5月27日
    00
  • MyBatis下SQL注入攻击的3种方式

    以下是MyBatis下SQL注入攻击的3种方式。 1.参数拼接 如下面的语句: @Select("SELECT * FROM user WHERE username = ‘" + username + "’ AND password = ‘" + password + "’") 其中 usernam…

    Java 2023年5月20日
    00
  • Ajax实现异步加载数据

    Ajax实现异步加载数据 什么是Ajax Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页内容的技术。它利用JavaScript在后台与服务器交换数据,实现局部更新网页的效果。 Ajax的优点 Ajax的优点主要有以下几个: 减少数据传输量:采用Ajax技术,仅需要更新页面的部分…

    Java 2023年6月15日
    00
  • 使用Spark进行实时流计算的方法

    使用Spark进行实时流计算的方法包括以下步骤: 1. 设置 Spark Streaming 上下文 要使用 Spark Streaming 进行实时流计算,首先需要设置 Spark Streaming 上下文。使用 Scala 代码的示例: import org.apache.spark.SparkConf import org.apache.spark.…

    Java 2023年5月20日
    00
  • SpringBoot实现阿里云短信发送的示例代码

    下面是详细讲解“SpringBoot实现阿里云短信发送的示例代码”的完整攻略,包含示例说明: 1. 注册阿里云短信服务 首先需要在阿里云官网上注册一个账号,进入控制台后选择开通短信服务。 开通短信服务后,获取AccessKey ID和AccessKey Secret。 2. 添加阿里云短信依赖 在SpringBoot项目中,使用Maven或Gradle添加阿…

    Java 2023年5月26日
    00
  • Java实现简单的socket通信教程

    Java实现简单的socket通信教程 1. 什么是Socket Socket是一种通讯机制,用于在不同进程之间传递数据,包括TCP/IP和UDP两种。Java提供了java.net包来实现Socket功能,可以方便地进行网络编程。 2. 实现Socket通信的步骤 建立服务端Socket对象; 监听客户端请求并接受连接请求; 建立客户端Socket对象并连…

    Java 2023年5月18日
    00
  • Java连接操作Oracle数据库代码详解

    Java连接操作Oracle数据库代码详解 简介 Java是一款广泛应用于企业级开发的高级编程语言,而Oracle是一款功能强大的关系型数据库管理系统。在开发过程中,我们经常需要使用Java连接Oracle数据库,并对其进行操作。本文将详细讲解Java连接操作Oracle数据库的代码实现过程。 步骤 1. 准备工作 在开始前,需要确认已经安装好以下两样内容:…

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