Java 中如何将字符串转换为 JSON 对象?

2025 年 3 月 25 日 | 阅读 5 分钟

在当今的 Java 开发中,处理 JSON 数据是一项常见任务。为了有效地操作数据,必须能够将 JSON 字符串转换为 Java 对象。为了完成此转换,本指南将探讨三个流行的开源库:Gson、JSON-Simple 和 Jackson。我们还将通过一个实际示例,演示如何在无需外部库的情况下,从类 JSON 字符串创建 Java 对象。

JSON 概述

JSON(JavaScript Object Notation)是一种流行的轻量级数据交换格式,用于 Web 开发和数据通信。由于其人类可读的格式,它易于人类和机器理解。这是一个 JSON 结构示例

JSON 格式

将 JSON 字符串转换为 JSON 对象

在 Java 中,将字符串转换为 JSON 对象 时,通常使用以下三个库:

  • 使用 Gson 库
  • 使用 JSON-Simple 库
  • Jackson 库

使用 Gson 库

Gson 是 Google 提供的一个强大的 Java 库,用于处理 JSON 数据。它允许轻松地在 JSON 字符串和 Java 对象之间进行转换。

以下代码行用于将 JSON 字符串转换为 JSON 对象。

我们还可以使用 toJson() 方法将 JSON 对象转换为 JSON 字符串。

使用 JSON-Simple 库

这个额外的免费 Java 软件包用于将 JSON 字符串转换为 JSON 对象。JSON-Simple 库的优点是体积小。当存在内存限制时,它效果很好。请注意,JDK 1.2 也兼容它。这意味着它可以与旧的 Java 5 项目一起使用。要将 JSON 字符串转换为 JSON 对象,我们使用以下命令。

使用 Jackson 库

Jackson 库是一个流行的、高效的 Java 库,用于将 Java 对象映射到 JSON,反之亦然。它性能快,功能丰富,并支持流式处理。该流可以解析来自在线服务的大型 JSON 输出,而无需将其完全加载到内存中。在下面的语句中,代表学生的 JSON 字符串被转换为代表学生的 Java 类。

Jackson 库的一个缺点是它至少需要 JDK 1.5。因此,如果我们处理的是旧版本,它就不适用了。该库缺乏 J2ME 功能是另一个缺点。

StringToJsonExample.java

输出

name: John
age: 25

解释

通过 convertStringToJsonObject 方法提取的键值对存储在名为 jsonObject 的 HashMap 中。使用正则表达式模式匹配并捕获每个对的键和值组件。然后使用 Matcher 将模式应用于输入 JSON 字符串。该函数遍历匹配项,提取值和键,然后将相应的数据添加到 JSON 对象中。在此过程中,会正确处理各种值类型,如字符串、数字和布尔值。displayJsonObject 方法打印每个键值对,该方法遍历 jsonObject 中的条目。这确保了转换后的 JSON 对象具有清晰的可读性。

结论

总而言之,Gson 包可以更轻松地将 JSON 数据转换为 Java 对象。它为在 Java 程序中使用 JSON 提供了一种清晰简单的方法。尤其是在处理现实世界中的 JSON 数据可能不符合预期结构的情况下,请务必正确处理异常。


Java 中字符串转 JSON 对象选择题

1. 以下哪个库常用于 Java 中的 JSON 解析?

  1. Jackson
  2. Gson
  3. JSON.simple
  4. 以上全部。

答案:d)

解释: Jackson、Gson 和 JSON.simple 是 Java 中用于解析 JSON 数据的流行库。


2. JSON.simple 库中的 JSONObject 类的作用是什么?

  1. 表示一个 JSON 对象。
  2. 解析 JSON 字符串。
  3. 将 Java 对象序列化为 JSON。
  4. 将 JSON 反序列化为 Java 对象。

答案:a)

解释: JSON.simple 库中的 JSONObject 类用于表示一个 JSON 对象。


3. 使用 JSON.simple 将包含 JSON 数据的字符串解析为 JSONObject 对象时,使用哪个方法?

  1. JSONObject.parseObject()
  2. JSONObject.fromString()
  3. JSONParser.parse()
  4. JSONValue.parse()

答案:d)

解释: 使用 JSON.simple 将包含 JSON 数据的字符串解析为 JSONObject 对象时,使用 JSONValue.parse() 方法。


4. 关于使用 Gson 将字符串转换为 JSON 对象,以下哪个陈述是正确的?

  1. Gson 需要显式配置才能将字符串转换为 JSON 对象。
  2. Gson 会自动将 JSON 字符串转换为 Java 对象,而无需显式解析。
  3. Gson 不支持从字符串到 JSON 对象的转换。
  4. Gson 不兼容 JSON 数据。

答案:b)

解释: Gson 提供从 JSON 字符串到 Java 对象的自动转换,无需显式解析。


5. 使用 Jackson ObjectMapper 将字符串转换为 JSON 对象时,使用哪个方法?

  1. ObjectMapper.fromString()
  2. ObjectMapper.readTree()
  3. ObjectMapper.parse()
  4. ObjectMapper.readValue()

答案:d)

解释: Jackson ObjectMapper 类的 readValue() 方法用于将字符串转换为 JSON 对象。