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

yizhihongxing

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 Boot整合Kafka教程详解

    Spring Boot整合Kafka教程详解 近年来,Kafka 成为了备受关注和喜爱的消息系统,凭借其高吞吐量、低延迟的特性,成为了大型系统中消息传递和处理的首选工具。本文讲解如何在 Spring Boot 项目中整合 Kafka。 1. 添加 Maven 依赖 在 pom.xml 文件中添加以下依赖: <dependencies> <d…

    Java 2023年6月2日
    00
  • python实现JAVA源代码从ANSI到UTF-8的批量转换方法

    下面是“python实现JAVA源代码从ANSI到UTF-8的批量转换方法”的完整攻略: 1. 安装Python 如果你的电脑上还没有Python,需要先安装Python。 请前往 https://www.python.org/downloads/ 下载并安装Python。 2. 编写Python代码 接下来需要编写Python代码来实现批量转换功能。具体代…

    Java 2023年5月20日
    00
  • 基于Servlet实现技术问答网站系统

    基于Servlet实现技术问答网站系统攻略 1. 搭建环境 要搭建Servlet技术问答网站系统,首先需要搭建JSP和Servlet开发环境,具体安装步骤如下:1. 下载并安装JDK和Tomcat。2. 配置JDK和Tomcat的环境变量。3. 配置Tomcat,包括修改端口号、配置Web.xml、配置Context.xml等。 2. 构建项目 构建项目可以…

    Java 2023年5月24日
    00
  • Java持久层框架Mybatis入门详细教程

    Java持久层框架Mybatis入门详细教程 什么是Mybatis? Mybatis是一种ORM(Object Relational Mapping)框架,它把数据库操作转换为面向对象编程语言的操作,让我们可以通过调用一个接口即可实现对数据库的CRUD操作,极大地提高了开发的效率。同时,Mybatis还具有可扩展、灵活性高、易于调试等特点,被广泛应用于Jav…

    Java 2023年5月20日
    00
  • Java中synchronized正确使用方法解析

    Java中synchronized正确使用方法解析 什么是synchronized synchronized是一个对象级别的锁,也称之为内部锁或者特定对象的锁。Java中提供了三种使用synchronized关键字同步代码块的方法。 修饰实例方法,锁的是当前实例对象(this)。 修饰静态方法,锁的是类对象(Class对象)。 修饰代码块,锁的是代码块中的对…

    Java 2023年5月26日
    00
  • spring MVC实现简单登录功能

    Spring MVC实现简单登录功能攻略 Spring MVC是一种基于Java的Web框架,它提供了许多便捷的功能和工具,使得开发者可以更加高效地开发Web应用程序。其中,实现简单登录功能是Spring MVC中常用的一种技术,本文将详细讲解如何在Spring MVC中实现简单登录功能,并提供两个示例来说明如何实现这一过程。 步骤一:创建Spring MV…

    Java 2023年5月17日
    00
  • 浅析Java中print、printf、println的区别

    浅析Java中print、printf、println的区别 概述 在Java编程中,我们经常需要在程序中输出信息。而输出信息的方式,主要有三种:print、printf、println。这三种方式虽然非常相似,但是却有着不同的用途和输出效果。本文将详细分析它们之间的区别。 print print是最常用的输出语句之一,用于输出字符串和变量的值。它的使用语法…

    Java 2023年5月26日
    00
  • Java基于Socket的文件传输实现方法

    Java基于Socket的文件传输实现方法 本篇攻略将介绍如何使用Java基于Socket实现文件传输的方法。通过该方法,可以实现发送方向接收方快速传输文件的目的。 准备工作 在进行文件传输前,需要准备的工作如下: 两台运行Java的计算机,分别充当发送方和接收方。 已处于同一网络下。 具备Java编程能力。 实现步骤 创建发送方和接收方的Socket对象。…

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