Java中的JSON处理:面向初学者的解析与序列化
\n\nJSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web开发、移动应用和微服务中。对于Java开发者来说,掌握读取(解析)和创建(序列化)JSON是必备技能。本文将使用两个最流行的库:Jackson和Gson,讲解Java中JSON处理的基础知识。内容面向初学者,所有示例都力求简单易懂。
\n\n什么是JSON解析与序列化?
\n在进入代码之前,我们先明确概念:
\n- \n
- 序列化 — 将Java对象转换为JSON字符串的过程。例如,你创建了一个
User对象,并希望以JSON格式将其发送到服务器。 \n - 解析(反序列化) — 反向过程:将JSON字符串转换回Java对象。例如,你从API收到响应,并希望像操作普通对象一样处理数据。 \n
项目准备:添加依赖
\n处理JSON需要外部库。我们介绍两个最流行的选择。
\n\n方案1:Jackson(推荐初学者使用)
\nJackson是一个强大且高性能的库。如果你使用Maven,请在pom.xml中添加:
<dependency>\n <groupId>com.fasterxml.jackson.core</groupId>\n <artifactId>jackson-databind</artifactId>\n <version>2.15.2</version>\n</dependency>\n\n方案2:Gson(来自Google)
\nGson是一个轻量且直观的库。Maven依赖如下:
\n<dependency>\n <groupId>com.google.code.gson</groupId>\n <artifactId>gson</artifactId>\n <version>2.10.1</version>\n</dependency>\n\n如果你不使用构建系统,也可以从Maven Central手动下载这两个库。
\n\n示例数据:User类
\n所有示例都将使用一个简单的User类:
public class User {\n private String name;\n private int age;\n private String email;\n\n // Jackson和Gson都需要空构造器\n public User() {}\n\n public User(String name, int age, String email) {\n this.name = name;\n this.age = age;\n this.email = email;\n }\n\n // Getter和Setter(对序列化很重要)\n public String getName() { return name; }\n public void setName(String name) { this.name = name; }\n\n public int getAge() { return age; }\n public void setAge(int age) { this.age = age; }\n\n public String getEmail() { return email; }\n public void setEmail(String email) { this.email = email; }\n}\n\n解析JSON(String → Java Object)
\n下面讲解如何读取JSON字符串并将其转换为User对象。
使用Jackson
\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\npublic class JacksonParsingExample {\n public static void main(String[] args) throws Exception {\n String jsonString = "{ \\"name\\": \\"伊万\\", \\"age\\": 30, \\"email\\": \\"ivan@example.com\\" }";\n\n ObjectMapper mapper = new ObjectMapper();\n User user = mapper.readValue(jsonString, User.class);\n\n System.out.println("姓名: " + user.getName());\n System.out.println("年龄: " + user.getAge());\n }\n}\n\n使用Gson
\nimport com.google.gson.Gson;\n\npublic class GsonParsingExample {\n public static void main(String[] args) {\n String jsonString = "{ \\"name\\": \\"玛丽亚\\", \\"age\\": 25, \\"email\\": \\"maria@example.com\\" }";\n\n Gson gson = new Gson();\n User user = gson.fromJson(json