Java中的JSON处理:实战解析与序列化

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

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

开始课程

Java中JSON处理入门

JSON(JavaScript对象表示法)是一种轻量级的数据交换格式,广泛应用于现代Web应用程序、API和微服务中。在Java中,JSON处理是开发中不可或缺的一部分:从读取配置文件到与RESTful服务交互。在本文中,我们将通过实践讲解如何使用两个最流行的库:Jackson和Gson,执行解析(将JSON转换为Java对象)和序列化(将Java对象转换为JSON)。

我们将研究真实的代码示例,学习如何处理嵌套结构,并分析典型错误。到本文结束时,您将能够在任何Java项目中自信地处理JSON。



1. 主要的JSON处理库

Jackson vs Gson:如何选择?

Java市场上有多个JSON处理库,但其中两个已成为事实上的标准:

  • Jackson — 性能更高、功能更丰富的库。支持注解、流式处理和自定义序列化器。推荐用于企业级项目。
  • Gson — 来自Google的简单轻量级库。非常适合小型项目和快速原型开发。

要使用其中任何一个,只需在pom.xml(Maven)或build.gradle(Gradle)中添加依赖即可。



添加Jackson依赖(Maven)

<dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-databind</artifactId>    <version>2.15.2</version></dependency>


添加Gson依赖(Maven)

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


2. JSON解析:从字符串到Java对象

解析是将JSON字符串转换为Java对象的过程。我们以简单的User类为例,介绍两种方法。



创建数据模型

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

// 必须有一个空构造器! public User() {}

// Getter和Setter方法 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; }}


使用Jackson进行解析

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonParsingExample { public static void main(String[] args) throws Exception { String json = "{\\"name\\":\\"伊万\\",\\"age\\":30,\\"email\\":\\"ivan@example.com\\"}"; ObjectMapper mapper = new ObjectMapper(); User user = mapper.readValue(json, User.class); System.out.println("姓名: " + user.getName()); System.out.println("年龄: " + user.getAge()); }}


使用Gson进行解析

import com.google.gson.Gson;

public class GsonParsingExample { public static void main(String[] args) { String json = "{\\"name\\":\\"玛丽亚\\",\\"age\\":25,\\"email\\":\\"maria@example.com\\"}"; Gson gson = new Gson(); User user = gson.fromJson(json, User.class); System.out.println("姓名: " + user.getName()); System.out.println("邮箱: " + user.getEmail()); }}


3. 序列化:从Java对象到JSON

序列化是相反的过程:我们将Java对象转换为JSON字符串。例如,这在

博客

书籍推荐