总结下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 树结构的核心接口。它有多个实现类,其中最常用的是 ObjectNode
和 ArrayNode
。
下面是这三个类的总结和常用方法介绍:
一、每个类的常用方法提供
下面我们将分别展示 JsonNode
、ObjectNode
和 ArrayNode
中常用方法的 使用示例。
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) | 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 | 索引、节点 | 替换指定索引处的元素 |