当前位置: 首页 > news >正文

总结下Jackson 中的JsonNode,ObjectNode,ArrayNode的方法

文章目录

  • 一、每个类的常用方法提供
    • 1. `JsonNode` 示例
    • 2. `ObjectNode` 示例
    • 3. `ArrayNode` 示例
  • 二、完整 API 方法列表表格(按类分类)
    • 第一部分:`JsonNode` 的常用方法表格
    • 第二部分:`ObjectNode` 常用方法表格
    • 第三部分:`ArrayNode` 常用方法表格

系列文章:
替换 FastJSON:推荐 Jackson 及详细用法指南(含工具类 + 替换方案)
总结下Jackson 中的JsonNode,ObjectNode,ArrayNode的方法
JsonNode 和 ObjectNode的区别以及他们能互换吗
Jackson 使用问题记录(持续更新)

Jackson 是 Java 中非常流行的 JSON 处理库,JsonNode 是 Jackson 中用于表示 JSON 树结构的核心接口。它有多个实现类,其中最常用的是 ObjectNodeArrayNode

下面是这三个类的总结和常用方法介绍:


一、每个类的常用方法提供

下面我们将分别展示 JsonNodeObjectNodeArrayNode 中常用方法的 使用示例


1. JsonNode 示例

ObjectMapper mapper = new ObjectMapper();
String json = "{\"name\":\"Alice\",\"age\":25,\"hobbies\":[\"reading\",\"coding\"]}";
JsonNode node = mapper.readTree(json);// 获取字段
JsonNode nameNode = node.get("name");
System.out.println(nameNode.asText()); // Alice// 判断类型
System.out.println(node.isObject());   // true
System.out.println(nameNode.isTextual()); // true// 遍历对象字段
node.fields().forEachRemaining(entry -> {System.out.println(entry.getKey() + ": " + entry.getValue());
});// 是否包含字段
System.out.println(node.has("age")); // true

2. ObjectNode 示例

ObjectMapper mapper = new ObjectMapper();
ObjectNode user = mapper.createObjectNode();// 添加字段
user.put("name", "Bob");
user.put("age", 30);
user.putNull("email");// 添加子对象
ObjectNode address = user.putObject("address");
address.put("city", "Beijing");// 添加数组
ArrayNode hobbies = user.putArray("hobbies");
hobbies.add("music").add("sports");// 删除字段
user.remove("email");// 打印结果
System.out.println(mapper.writeValueAsString(user));
// {"name":"Bob","age":30,"address":{"city":"Beijing"},"hobbies":["music","sports"]}

3. ArrayNode 示例

ObjectMapper mapper = new ObjectMapper();
ArrayNode array = mapper.createArrayNode();// 添加元素
array.add("apple").add(42).add(true);// 插入元素
array.insert(1, "banana");// 添加子对象和子数组
ObjectNode obj = array.addObject();
obj.put("key", "value");ArrayNode subArray = array.addArray();
subArray.add("nested");// 删除与替换
array.remove(0);           // 删除第一个元素
array.set(0, mapper.convertValue("new value", JsonNode.class));// 输出
System.out.println(mapper.writeValueAsString(array));
// ["new value",true,{"key":"value"},["nested"]]

二、完整 API 方法列表表格(按类分类)

接下来,我将按照你要求的格式,分批提供完整的 API 方法列表表格。我们先来看第一部分:


第一部分:JsonNode 的常用方法表格

方法名返回值类型参数说明功能描述
get(String fieldName)JsonNode字段名获取指定字段的节点
get(int index)JsonNode索引获取数组中指定索引的节点
asText()String-转换为字符串值
asInt()int-转换为整数值
asBoolean()boolean-转换为布尔值
isMissing()boolean-是否是缺失字段
isNull()boolean-是否是 null
isArray()boolean-是否是数组
isObject()boolean-是否是对象
isValueNode()boolean-是否是值节点(如数字、字符串)
fields()Iterator<Map.Entry<String, JsonNode>>-获取对象的所有字段迭代器
elements()Iterator<JsonNode>-获取数组元素迭代器
has(String fieldName)boolean字段名是否包含该字段
hasNonNull(String field)boolean字段名是否包含非 null 字段

第二部分:ObjectNode 常用方法表格

方法名返回值类型参数说明功能描述
put(String fieldName, String value)ObjectNode字段名、字符串值添加一个字符串字段
put(String fieldName, int value)ObjectNode字段名、整数添加一个整型字段
put(String fieldName, boolean value)ObjectNode字段名、布尔值添加一个布尔字段
putNull(String fieldName)ObjectNode字段名添加一个 null 字段
set(String fieldName, JsonNode value)ObjectNode字段名、JsonNode设置一个已有节点作为字段值
remove(String fieldName)ObjectNode字段名移除指定字段
setAll(Map<String, ? extends JsonNode> other)ObjectNode其他 Map合并另一个 Map
setAll(JsonNode other)ObjectNode其他 JsonNode合并另一个 JsonNode
putObject(String fieldName)ObjectNode字段名创建并返回一个新的 ObjectNode 作为字段值
putArray(String fieldName)ArrayNode字段名创建并返回一个新的 ArrayNode 作为字段值

第三部分:ArrayNode 常用方法表格

方法名返回值类型参数说明功能描述
add(String value)ArrayNode字符串值添加一个字符串元素
add(int value)ArrayNode整数添加一个整型元素
add(boolean value)ArrayNode布尔值添加一个布尔元素
add(double value)ArrayNode双精度浮点数添加一个双精度数
add(JsonNode node)ArrayNodeJsonNode添加一个节点
addNull()ArrayNode-添加一个 null 元素
insert(int index, JsonNode node)ArrayNode索引、节点在指定位置插入节点
insert(int index, String value)ArrayNode索引、字符串插入字符串值
addObject()ObjectNode-添加一个空对象到数组末尾
addArray()ArrayNode-添加一个空数组到数组末尾
remove(int index)ArrayNode索引移除指定索引处的元素
set(int index, JsonNode node)ArrayNode索引、节点替换指定索引处的元素
http://www.xdnf.cn/news/451261.html

相关文章:

  • 时代推动建筑管理变革,楼宇自控系统成现代建筑管理必由之路
  • 数据结构·字典树
  • 每周靶点:TREM2、DLL3及文献分享
  • 代码随想录算法训练营第60期第三十六天打卡
  • W1电力线载波通信技术
  • Linux 常用命令 -hostnamectl【主机名控制】
  • Mixup
  • 【RabbitMQ】发布确认机制的具体实现
  • 3Dblox
  • 【Python3教程】Python3基础篇之输入与输出
  • 车载网关--- 职责边界划分与功能解耦设计
  • 安卓基础(Bitmap)
  • 致远OA项目管理应用包简介【附百度网盘链接】
  • scratch基础-外观模块
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的智能安检机技术方案‌
  • 基于SpringBoot+Vue的房屋租赁管理系统源码包(完整版)开发实战
  • matlab提取脑电数据的五种频域特征指标数值
  • 电脑软件出现应用程序未响应
  • JJJ:linux ida
  • 深入掌握 Python 切片操作:解锁数据处理的高效密码
  • hadoop知识点
  • Guix System 系统详解:从架构到生态的深度解析
  • WebGL图形编程实战【7】:变换流水线 × 坐标系与矩阵精讲
  • 【ESP32-S3】Guru Meditation Error 崩溃分析实战:使用 addr2line 工具 + bat 脚本自动解析 Backtrace
  • Blender 入门教程(二):纹理绘制
  • Java NIO 深度解析:突破传统IO的性能瓶颈
  • 【Linux】基础指令(Ⅱ)
  • Joker 智能可视化开发平台 AI胜出的关键
  • 解锁健康生活:现代养生实用方案
  • 【c语言】自定义类型:结构体