Java中的JSON解析:20分钟从新手到专家

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

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

开始课程

Java中的JSON解析:从零到可运行代码



您是否曾经看着API返回的JSON数据感到一丝恐慌?“我该怎么从这里提取name?那个嵌套对象又该怎么处理?”——这些问题听起来很熟悉,对吧?别担心,您并不孤单。“How to parse JSON in Java”是Stack Overflow上最热门的问题之一,今天我们将一劳永逸地解决这个问题。



JSON(JavaScript对象表示法)是一种标准的数据交换格式。几乎每个现代服务——从天气预报到股票行情——都以JSON格式返回数据。能够熟练地解析JSON是Java开发人员的基本技能。我们不会阅读枯燥的规范文档。相反,我们将使用三个最流行的库:Gson(Google)、Jackson(FasterXML)和经典的org.json。您将看到不同方法的差异,并能够选择适合自己的工具。



阅读本文后您将获得什么?您将能够解析任何JSON——从简单的字符串到包含数组的复杂嵌套结构。我们开始吧!



准备工作:我们需要什么



在示例中,我们将使用一个简单的Maven项目。如果您不使用Maven也没关系,只需手动下载库的JAR文件即可。以下是pom.xml所需的最小依赖项:



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

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

<!-- org.json (简单) --><dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20231013</version></dependency>


现在,假设我们从服务器收到了以下JSON(用户信息):



{  "id": 42,  "name": "阿莉莎",  "email": "alice@example.com",  "isActive": true,  "address": {    "city": "莫斯科",    "street": "特维尔大街"  },  "hobbies": ["阅读", "编程", "骑自行车"]}


我们的任务是将这个字符串转换为Java对象并提取所需字段。我们按顺序进行。



方法1:使用Gson解析Java中的JSON(简单而优雅)



Google的Gson可以说是Java中解析JSON最简单的方法。它的主要优势在于极简主义。您不需要编写大量代码。



步骤1. 创建一个与JSON结构对应的Java类(POJO)。



public class User {    private int id;    private String name;    private String email;    private boolean isActive;    private Address address;    private List<String> hobbies;

// Getter和Setter(Gson必需!) public int getId() { return id; } public void setId(int id) { this.id = id; }

public String getName() { return name; } public void setName(String name) { this.name = name; }

// ... 其余getter/setter类似}

public class Address { private String city; private String street; // getter/setter}


步骤2. 用一行代码解析JSON。



import com.google.gson.Gson;

public class GsonExample { public static void main(String[] args) { String json = "{\\"id\\":42,\\"name\\":\\"阿莉莎\\",\\"email\\":\\"alice@example.com\\",\\"isActive\\":true,\\"address\\":{\\"city\\":\\"莫斯科\\",\\"street\\":\\"特维尔大街\\"},\\"hobbies\\":[\\"阅读\\",\\"编程\\",\\"骑自行车\\"]}";

Gson gson = new Gson(); User user = gson.fromJson(json, User.class);

System.out.print

博客

书籍推荐