首页 Java java教程 如何在 Java 应用程序中解析 JSON 文本?

如何在 Java 应用程序中解析 JSON 文本?

Jan 22, 2025 am 06:10 AM

JSON:用于服务器-客户端通信的多功能数据格式

有效地将数据从服务器发送到客户端以显示在网页或其他可视界面上通常涉及使用 JSON(JavaScript 对象表示法)。 让我们探索 JSON 的功能并将其与其他方法进行比较。

为什么选择 JSON? 基于文本格式的优点

如果没有 JSON(或类似的基于文本的格式),在应用程序的不同版本之间更新数据结构可能会出现问题。 旧版本可能无法理解新的数据字段,而新版本可能会因旧版本中丢失的数据而苦苦挣扎。 JSON 优雅地解决了这个问题:旧版本只是忽略未知字段,而新版本可以使用默认值来处理缺失的字段。 虽然二进制格式可以实现这一点,但它们需要维护新旧读/写函数,以及文件中嵌入的版本号,与 JSON 的简单性相比,这是一个巨大的开销。 JSON 等基于文本的格式固有的可读性也有助于调试和开发。

理解 JSON(JavaScript 对象表示法)

JSON 是一种基于文本的标准结构化数据格式,受到 JavaScript 对象语法的启发。 它的广泛采用超越了 JavaScript;许多编程语言都提供内置或现成的库来解析和生成 JSON。 本文重点介绍它在 Java 中的使用。

用 Java 解析 JSON:三个库的比较

一些 Java 库擅长解析 JSON 数据。 本文研究了三种流行的选择:Jackson、Gson 和 org.json。

1。杰克逊 (FasterXML)

Jackson 是一个高性能 JSON 处理器。 要使用它,请将以下依赖项添加到您的 pom.xml:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
登录后复制

示例代码:

此代码片段演示了使用 Jackson 将 JSON 转换为 Java 对象:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonParserExample {
    public static void main(String[] args) throws Exception {
        String json = "{\"name\": \"John\", \"age\": 30}";

        ObjectMapper objectMapper = new ObjectMapper();
        Person person = objectMapper.readValue(json, Person.class);

        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

class Person {
    private String name;
    private int age;

    // Getters and setters
    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; }
}
登录后复制

Jackson 的 readValue 方法解析 JSON 字符串并将其映射到 Person 类,利用类的字段和 getter/setter 方法。

2。 Gson(谷歌)

由 Google 开发的 Gson 提供了另一种强大的解决方案。 将此依赖项添加到您的 pom.xml:

<dependency>
    <groupId>com.google.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>
登录后复制

示例代码:

Gson 的 fromJson 方法执行类似的转换:

import com.google.gson.Gson;

public class JsonParserExample {
    public static void main(String[] args) {
        String json = "{\"name\": \"John\", \"age\": 30}";

        Gson gson = new Gson();
        Person person = gson.fromJson(json, Person.class);

        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

// Person class remains the same as in the Jackson example
登录后复制

3。 org.json

org.json 库提供了一种简单的方法。 您需要添加适当的依赖项(请参阅 org.json 文档以获取最新版本)。

示例代码:

import org.json.JSONObject;

public class JsonParserExample {
    public static void main(String[] args) {
        String json = "{\"name\": \"John\", \"age\": 30}";

        JSONObject jsonObject = new JSONObject(json);

        String name = jsonObject.getString("name");
        int age = jsonObject.getInt("age");

        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }
}
登录后复制

这里,org.json直接将JSON解析为JSONObject,允许使用getStringgetInt等方法访问其字段。

How can one parse JSON text in a Java application?

选择合适的库

Jackson 由于其性能和广泛的功能而经常受到企业项目的青睐。 Gson 的简单性使其成为小型项目的不错选择。 org.json 提供了一个基本但实用的替代方案。 最好的库取决于您项目的特定需求和偏好。 考虑性能要求、易用性以及附加功能的可用性等因素。 请在下面的评论中分享您使用其他 JSON 库的经验!

以上是如何在 Java 应用程序中解析 JSON 文本?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

2025年的前4个JavaScript框架:React,Angular,Vue,Svelte 2025年的前4个JavaScript框架:React,Angular,Vue,Svelte Mar 07, 2025 pm 06:09 PM

2025年的前4个JavaScript框架:React,Angular,Vue,Svelte

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型? Java的类负载机制如何起作用,包括不同的类载荷及其委托模型? Mar 17, 2025 pm 05:35 PM

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?

如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案? 如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案? Mar 17, 2025 pm 05:46 PM

如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?

Node.js 20:关键性能提升和新功能 Node.js 20:关键性能提升和新功能 Mar 07, 2025 pm 06:12 PM

Node.js 20:关键性能提升和新功能

冰山:数据湖桌的未来 冰山:数据湖桌的未来 Mar 07, 2025 pm 06:31 PM

冰山:数据湖桌的未来

Spring Boot Snakeyaml 2.0 CVE-2022-1471问题已修复 Spring Boot Snakeyaml 2.0 CVE-2022-1471问题已修复 Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471问题已修复

如何在Java中实施功能编程技术? 如何在Java中实施功能编程技术? Mar 11, 2025 pm 05:51 PM

如何在Java中实施功能编程技术?

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射? 如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射? Mar 17, 2025 pm 05:43 PM

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?

See all articles