深入了解 Java 中的 Jackson for JSON:了解 JsonNode、ArrayNode 和 ObjectMapper
嘿,Java 开发者们! ?
曾经发现自己盯着 JSON 数据并思考,“我到底如何在 Java 中使用它?”别担心 - 你并不孤单!无论是构建 API、使用 API 还是只是处理数据,处理 JSON 几乎是不可避免的。但好消息是:杰克逊支持你!
在本文中,我将向您介绍一些 Jackson 基础知识,例如 JsonNode、ArrayNode 和 ObjectMapper。我们将保持简单,通过简单的代码示例和输出向您展示事情是如何工作的。
听起来不错吗?让我们深入了解吧! ?
在 Spring Boot 项目中设置 Jackson
在深入研究示例之前,让我们快速介绍一下如何在 Spring Boot 项目中设置 Jackson。好消息:Spring Boot 内置了 Jackson,因此只需最少的设置。 ?
当您创建新的 Spring Boot 项目时,Jackson 将作为用于序列化和反序列化的默认 JSON 库。如果您想显式添加 Jackson,请确保您的 pom.xml 中包含以下依赖项:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.18.0</version> <!-- You can use the latest version --> </dependency>
这将添加 Jackson 的核心功能,包括用于 JSON 处理的 ObjectMapper。
奖励:Spring Boot 配置
Spring Boot 为 Jackson 提供了开箱即用的设置,但您也可以通过 application.properties 或 application.yml 文件对其进行自定义。
例如,要配置 JSON 的漂亮打印,您可以添加:
spring.jackson.serialization.indent_output=true
或者在application.yml中:
spring: jackson: serialization: indent_output: true
现在,每当您的 Spring Boot 应用程序序列化 JSON 时,它都会被很好地格式化!
完成此设置后,您就可以使用 Jackson 在 Spring Boot 应用程序中使用 JSON。
那么,杰克逊是什么?
Jackson 就像一把在 Java 中处理 JSON 的瑞士军刀。您可以用它来:
- 1.将 Java 对象转换为 JSON(序列化)。
- 2.将 JSON 转换为 Java 对象(反序列化)。
- 3.使用 JsonNode 以树状结构处理 JSON。
今天我们将探索其中一些功能,所以准备好让 JSON 处理感觉不那么可怕!
JsonNode:您迈入 JSON 的第一步
将 JsonNode 视为一把神奇的钥匙,可让您探索和操作 JSON 数据。它是一种用 Java 表示 JSON 结构不同部分的方法。
想象一下您有这个简单的 JSON 数据:
{ "name": "Samarth", "age": 30, "city": "New York" }
如何用 Java 阅读此内容?让我们看看吧!
代码如下:
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonNodeExample { public static void main(String[] args) throws Exception { String jsonString = "{\"name\":\"Samarth\", \"age\":30, \"city\":\"New York\"}"; // Step 1: Create an ObjectMapper ObjectMapper objectMapper = new ObjectMapper(); // Step 2: Parse the JSON string into a JsonNode JsonNode jsonNode = objectMapper.readTree(jsonString); // Step 3: Access values from the JsonNode System.out.println("Name: " + jsonNode.get("name").asText()); System.out.println("Age: " + jsonNode.get("age").asInt()); System.out.println("City: " + jsonNode.get("city").asText()); } }
输出:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.18.0</version> <!-- You can use the latest version --> </dependency>
这里发生了什么事?
- ObjectMapper 是 Jackson 的主要帮手。它是 JSON 和 Java 之间的转换。
- readTree() 读取 JSON 并将其转换为 JsonNode 对象。
- 我们使用 .get() 来访问 JSON 中的各个字段 -“name”、“age”和“city”。
很酷,对吧?现在您开始看到在 Java 中使用 JSON 是多么容易!
ArrayNode:处理 JSON 数组
但是如果你的 JSON 是一个数组怎么办?别担心,杰克逊也能解决这个问题!假设您有这个 JSON 数组:
spring.jackson.serialization.indent_output=true
我们可以使用 ArrayNode 来读取和处理这个对象数组。
代码如下:
spring: jackson: serialization: indent_output: true
输出:
{ "name": "Samarth", "age": 30, "city": "New York" }
这里发生了什么事?
- **ArrayNode **是一种特殊类型的 **JsonNode **,表示 JSON 对象数组。
- 我们循环遍历数组中的每个元素并打印出每个人的“名字”。
简单吧?借助 ArrayNode,Jackson 使处理 JSON 数组变得轻而易举!
ObjectMapper:杰克逊的核心
现在,我们来谈谈ObjectMapper - Jackson 的核心和灵魂。它是将 Java 对象转换为 JSON 的首选工具,反之亦然。
将 Java 对象序列化为 JSON
序列化只是一种奇特的说法,“将我的 Java 对象转换为 JSON 字符串”。假设您有一个简单的 Person 类:
代码:
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonNodeExample { public static void main(String[] args) throws Exception { String jsonString = "{\"name\":\"Samarth\", \"age\":30, \"city\":\"New York\"}"; // Step 1: Create an ObjectMapper ObjectMapper objectMapper = new ObjectMapper(); // Step 2: Parse the JSON string into a JsonNode JsonNode jsonNode = objectMapper.readTree(jsonString); // Step 3: Access values from the JsonNode System.out.println("Name: " + jsonNode.get("name").asText()); System.out.println("Age: " + jsonNode.get("age").asInt()); System.out.println("City: " + jsonNode.get("city").asText()); } }
输出:
Name: Samarth Age: 30 City: New York
这里发生了什么事?
- **ObjectMapper **获取 Person 对象并使用 writeValueAsString() 将其转换为 JSON 字符串。
- writeValueAsString() 方法创建 Java 对象的 JSON 表示形式。
- 结果是一个有效的 JSON 字符串,您可以发送到 API 或存储在数据库中。
将 JSON 反序列化为 Java 对象
反之亦然!您可以获取 JSON 并将其转换回 Java 对象。这称为反序列化。
代码如下:
[ {"name": "Samarth"}, {"name": "Ujjwal"}, {"name": "Gaurav"} ]
输出:
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; public class ArrayNodeExample { public static void main(String[] args) throws Exception { String jsonArrayString = "[{\"name\":\"Samarth\"}, {\"name\":\"Ujjwal\"}, {\"name\":\"Gaurav\"}]"; // Step 1: Create an ObjectMapper ObjectMapper objectMapper = new ObjectMapper(); // Step 2: Parse the JSON array into an ArrayNode ArrayNode arrayNode = (ArrayNode) objectMapper.readTree(jsonArrayString); // Step 3: Loop through each element in the array for (JsonNode jsonNode : arrayNode) { System.out.println("Name: " + jsonNode.get("name").asText()); } } }
这里发生了什么事?
我们再次使用 **ObjectMapper **,但这次它读取 JSON 字符串并将其转换回 Person 对象。
这是使用 readValue() 完成的,结果是一个完整的 Java 对象,可以在您的代码中使用。
总结
就是这样!我们已经涵盖了很多内容:
- JsonNode:如何读取和操作 JSON 数据。
- ArrayNode:如何处理 JSON 数组。
- ObjectMapper:如何在 Java 对象与 JSON 之间进行序列化和反序列化。
我希望本指南能让 Jackson 不再那么令人生畏,并且使用起来更加有趣!一旦掌握了窍门,您很快就能像专业人士一样处理 JSON。
但是嘿,不要停在这里!请留意我的下一篇文章,我们将深入探讨更高级的 Jackson 功能和实际应用程序的最佳实践。
下次见!快乐编码! ?
以上是深入了解 Java 中的 Jackson for JSON:了解 JsonNode、ArrayNode 和 ObjectMapper的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

公司安全软件导致部分应用无法正常运行的排查与解决方法许多公司为了保障内部网络安全,会部署安全软件。...

将姓名转换为数字以实现排序的解决方案在许多应用场景中,用户可能需要在群组中进行排序,尤其是在一个用...

系统对接中的字段映射处理在进行系统对接时,常常会遇到一个棘手的问题:如何将A系统的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架进行数据库操作时,经常需要根据实体类的属性名构造查询条件。如果每次都手动...

在使用IntelliJIDEAUltimate版本启动Spring...

Java对象与数组的转换:深入探讨强制类型转换的风险与正确方法很多Java初学者会遇到将一个对象转换成数组的�...

电商平台SKU和SPU表设计详解本文将探讨电商平台中SKU和SPU的数据库设计问题,特别是如何处理用户自定义销售属...

Redis缓存方案如何实现产品排行榜列表的需求?在开发过程中,我们常常需要处理排行榜的需求,例如展示一个�...
