嘿,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中文网其他相关文章!

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

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

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

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