总结下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> - 获取对象的所有字段迭代器
elements() Iterator - 获取数组元素迭代器
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 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) ArrayNode JsonNode 添加一个节点
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 索引、节点 替换指定索引处的元素

你可能感兴趣的:(json,java,开发语言)