0

0

Java中Gson库的作用 详解Google的JSON解析库

穿越時空

穿越時空

发布时间:2025-06-25 16:25:01

|

1134人浏览过

|

来源于php中文网

原创

gson是google提供的用于处理json的java库。1. 首先在项目中添加依赖,maven通过pom.xml添加,gradle则在build.gradle中引入;2. 使用gson().tojson()将java对象序列化为json字符串;3. 使用gson().fromjson()将json字符串反序列化为java对象;4. gson能自动处理复杂对象和嵌套结构,如包含集合或子对象的类;5. 通过gsonbuilder可自定义序列化规则,例如设置日期格式;6. 使用@expose注解配合exclusionstrategy控制字段的序列化策略;7. gson适合快速开发,而jackson性能更强,适用于对性能要求高的场景。

Java中Gson库的作用 详解Google的JSON解析库

Gson是Google提供的Java库,用于在Java对象和JSON数据之间进行序列化和反序列化。简单来说,就是帮你把Java对象转换成JSON字符串,或者反过来。

Java中Gson库的作用 详解Google的JSON解析库

Gson简化了JSON处理,减少了手动解析和生成的复杂性。

Java中Gson库的作用 详解Google的JSON解析库

如何在Java项目中使用Gson

首先,你需要添加Gson库到你的项目依赖中。如果你使用Maven,可以在pom.xml文件中添加以下依赖:

立即学习Java免费学习笔记(深入)”;

Java中Gson库的作用 详解Google的JSON解析库
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.9.0</version>
</dependency>

如果是Gradle,则在build.gradle文件中添加:

implementation 'com.google.code.gson:gson:2.9.0'

然后,就可以开始使用了。

如何使用Gson将Java对象序列化为JSON字符串

假设你有一个Person类:

class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

现在,你想把这个Person对象转换成JSON字符串:

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        Person person = new Person("Alice", 30);
        Gson gson = new Gson();
        String json = gson.toJson(person);
        System.out.println(json); // 输出: {"name":"Alice","age":30}
    }
}

Gson().toJson(object) 就是把Java对象转换成JSON的关键。

如何使用Gson将JSON字符串反序列化为Java对象

有了JSON字符串,我们也可以把它转换回Java对象:

PHP高级程序设计 模式 框架与测试(中文高清PDF版)
PHP高级程序设计 模式 框架与测试(中文高清PDF版)

享有盛誉的PHP高级教程,Zend Framework核心开发人员力作,深入设计模式、PHP标准库和JSON 。   今天,PHP已经是无可争议的Web开发主流语言。PHP 5以后,它的面向对象特性也足以与Java和C#相抗衡。然而,讲述PHP高级特性的资料一直缺乏,大大影响了PHP语言的深入应用。   本书填补了这一空白。它专门针对有一定经验的PHP程序员,详细讲解了对他们最为重要的主题

下载
import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        String json = "{\"name\":\"Alice\",\"age\":30}";
        Gson gson = new Gson();
        Person person = gson.fromJson(json, Person.class);
        System.out.println(person.name); // 输出: Alice
        System.out.println(person.age); // 输出: 30
    }
}

Gson().fromJson(jsonString, Class) 这就是把JSON字符串转换成Java对象的方法。

Gson如何处理复杂对象和嵌套对象

Gson可以很好地处理复杂对象,包括嵌套对象、集合和数组。例如,假设我们有以下类:

import java.util.List;

class Address {
    String street;
    String city;

    public Address(String street, String city) {
        this.street = street;
        this.city = city;
    }
}

class Person {
    String name;
    int age;
    Address address;
    List<String> hobbies;

    public Person(String name, int age, Address address, List<String> hobbies) {
        this.name = name;
        this.age = age;
        this.address = address;
        this.hobbies = hobbies;
    }
}

序列化:

import com.google.gson.Gson;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        Address address = new Address("123 Main St", "Anytown");
        List<String> hobbies = Arrays.asList("Reading", "Hiking");
        Person person = new Person("Bob", 25, address, hobbies);

        Gson gson = new Gson();
        String json = gson.toJson(person);
        System.out.println(json);
    }
}

输出的JSON字符串会包含嵌套的地址信息和爱好列表。反序列化过程类似,Gson会自动处理嵌套关系。

Gson的自定义序列化和反序列化是什么?

有时候,默认的序列化和反序列化规则可能不满足需求。比如,你可能想自定义日期的格式,或者在序列化时忽略某些字段。Gson提供了自定义序列化器和反序列化器的机制。

例如,自定义日期格式:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

class Event {
    String name;
    Date date;

    public Event(String name, Date date) {
        this.name = name;
        this.date = date;
    }
}

public class Main {
    public static void main(String[] args) {
        Event event = new Event("Meeting", new Date());

        GsonBuilder gsonBuilder = new GsonBuilder();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        gsonBuilder.setDateFormat(df.toPattern());
        Gson gson = gsonBuilder.create();

        String json = gson.toJson(event);
        System.out.println(json);
    }
}

这里,我们使用GsonBuilder来设置日期的格式。

Gson的Exclusion策略如何使用?

Gson允许你使用Exclusion策略来控制哪些字段应该被序列化或反序列化。这可以通过@Expose注解和ExclusionStrategy接口来实现。

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;

class User {
    @Expose
    String username;
    String password; // 不希望被序列化

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
}

public class Main {
    public static void main(String[] args) {
        User user = new User("john.doe", "secret");

        Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
        String json = gson.toJson(user);
        System.out.println(json); // 输出: {"username":"john.doe"}
    }
}

在这个例子中,只有被@Expose注解标记的字段才会被序列化。

Gson与Jackson的对比:如何选择?

Gson和Jackson都是流行的JSON处理库,选择哪个取决于具体需求。Gson简单易用,适合快速开发;Jackson性能更高,功能更强大,适合对性能有要求的场景。如果项目初期对性能要求不高,Gson可能更合适。但如果性能是关键,或者需要更高级的特性,Jackson可能更优。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

455

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

334

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

0

2025.09.15

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1946

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2119

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1168

2024.11.28

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.3万人学习

C# 教程
C# 教程

共94课时 | 11.1万人学习

Java 教程
Java 教程

共578课时 | 80.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号