Java中的JSON处理:对象解析与序列化

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 Java 中处理 JSON:解析与序列化



JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于现代 Web 应用程序、API 和微服务中。在 Java 中,处理 JSON 已成为开发中不可或缺的一部分,无论是解析服务器响应、序列化对象以进行存储,还是在系统组件之间传输数据。在本文中,我们将详细讲解如何使用两个流行的库:Google 的 Gson 和 Jackson,在 Java 中执行 JSON 的解析与序列化。



1. 什么是 JSON,为什么在 Java 中需要它?



JSON 是一种基于“键-值”对和有序列表的文本格式。它易于人类和机器阅读,使其成为服务器与客户端之间数据传输的理想选择。在 Java 中,JSON 用于:



  • 数据交换——通过 REST API(例如,从服务器获取数据或发送表单)。
  • 配置文件——许多框架使用 JSON 来配置应用程序。
  • 对象序列化——将 Java 对象转换为 JSON 字符串,以便保存到文件或数据库。
  • 反序列化——从 JSON 字符串恢复 Java 对象。


Java 直到版本 9(引入了 java.json 模块)才内置了对 JSON 的支持,因此开发者通常使用第三方库,例如 Gson 和 Jackson。我们来分别看看它们。



2. 使用 Gson 解析 JSON



Gson 是 Google 的一个轻量级库,可以轻松地将 JSON 转换为 Java 对象,反之亦然。它使用简单,对于基本场景不需要额外的注解。



2.1. 安装 Gson



将依赖项添加到您的 pom.xml(Maven):

<dependency>    <groupId>com.google.code.gson</groupId>    <artifactId>gson</artifactId>    <version>2.10.1</version></dependency>


如果您使用 Gradle:

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


2.2. 将 JSON 解析为 Java 对象(反序列化)



假设我们有一个包含用户信息的 JSON 字符串:

{  "name": "伊万·彼得罗夫",  "age": 30,  "email": "ivan@example.com"}


创建一个 User 类:

public class User {    private String name;    private int age;    private String email;

// Getters 和 Setters(对于 Gson 是必需的) public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}


现在解析 JSON:

import com.google.gson.Gson;

public class Main { public static void main(String[] args) { String jsonString = "{\\"name\\":\\"伊万·彼得罗夫\\",\\"age\\":30,\\"email\\":\\"ivan@example.com\\"}"; Gson gson = new Gson(); User user = gson.fromJson(jsonString, User.class); System.out.println("姓名: " + user.getName()); System.out.println("年龄: " + user.getAge()); }}


输出:

姓名: 伊万·彼得罗夫年龄: 30


2.3. 将 Java 对象序列化为 JSON



反向过程——将对象转换为 JSON:

User user = new User();user.setName("玛丽亚·斯米尔诺娃");user.setAge(25);user.setEmail("maria@example.com");

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


结果:

{"name":"玛丽亚·斯                

博客

书籍推荐