JSON对象相互转换

目录

[String --> JsonNode对象](#String --> JsonNode对象)

[JsonNode对象 --> String](#JsonNode对象 --> String)

[Map --> JsonNode对象,object>](#Map --> JsonNode对象,object>)

[JsonNode数组 --> List>集合](#JsonNode数组 --> List>集合)

[List> --> JsonNode](#List> --> JsonNode)

获取JsonNode中某个key的值

获取JsonNode字段下的某个数组


String --> JsonNode对象

java 复制代码
// 创建一个 ObjectMapper 对象实例,用于在 Java 对象和 JSON 数据之间进行序列化和反序列化
ObjectMapper objectMapper = new ObjectMapper();

// 解析整个JSON字符串为一个JsonNode对象
JsonNode rootNode = objectMapper.readTree(result);

JsonNode对象 --> String

java 复制代码
// 创建一个 ObjectMapper 对象实例,用于在 Java 对象和 JSON 数据之间进行序列化和反序列化
ObjectMapper objectMapper = new ObjectMapper();

// 解析整个JSON字符串为一个JsonNode对象
JsonNode jsonResult= objectMapper.readTree(result);

// JsonNode转换成String
result = objectMapper.writeValueAsString(jsonResult);

Map<String,Object> --> JsonNode对象

java 复制代码
// 创建一个 ObjectMapper 实例  
ObjectMapper objectMapper = new ObjectMapper();

Map<String,Object> map = new HashMap<>();
map.put("name","张三");
map.put("age",30);

// 将Map转换为JsonNode
JsonNode jsonNode = objectMapper.valueToTree(map);

JsonNode数组 --> List<Map<String,Object>>集合

java 复制代码
// 创建一个 ObjectMapper 对象实例,用于在 Java 对象和 JSON 数据之间进行序列化和反序列化
ObjectMapper objectMapper = new ObjectMapper();

// 解析整个JSON字符串为一个JsonNode对象
JsonNode rootNode = objectMapper.readTree(result);

// 获取data字段下的data数组
JsonNode dataArrayNode = rootNode.get("data").get("data");

// 转换JsonNode数组成List<Map<String,Object>>集合
List<Map<String, Object>> dataList = objectMapper.convertValue(dataArrayNode, new TypeReference<List<Map<String, Object>>>() {});

List<Map<String,Object>> --> JsonNode

java 复制代码
 // 创建一个 ObjectMapper 对象实例,用于在 Java 对象和 JSON 数据之间进行序列化和反序列化
ObjectMapper objectMapper = new ObjectMapper();

// 解析整个JSON字符串为一个JsonNode对象
JsonNode rootNode = objectMapper.readTree(result);

// 获取data字段下的data数组
JsonNode dataArrayNode = rootNode.get("data").get("data");

// 转换成List<Map<String,Object>>集合
List<Map<String, Object>> dataList = objectMapper.convertValue(dataArrayNode, new TypeReference<List<Map<String, Object>>>() {});

// 用来收集结果的集合
ArrayNode arrayNode = objectMapper.createArrayNode();

// 循环遍历
dataList.forEach(item ->{
    // 给结果集设置值
    arrayNode.add(objectMapper.valueToTree(item));
}

获取JsonNode中某个key的值

java 复制代码
// 创建一个 ObjectMapper 对象实例,用于在 Java 对象和 JSON 数据之间进行序列化和反序列化
ObjectMapper objectMapper = new ObjectMapper();

// 解析整个JSON字符串为一个JsonNode对象
JsonNode rootNode = objectMapper.readTree(result);

// 获取errcode
JsonNode errcode = rootNode.get("errcode");

获取JsonNode字段下的某个数组

java 复制代码
// 创建一个 ObjectMapper 对象实例,用于在 Java 对象和 JSON 数据之间进行序列化和反序列化
ObjectMapper objectMapper = new ObjectMapper();

// 解析整个JSON字符串为一个JsonNode对象
JsonNode rootNode = objectMapper.readTree(result);

// 获取data字段下的data数组
JsonNode dataArrayNode = rootNode.get("data").get("data");
相关推荐
Sammyyyyy4 分钟前
2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
开发语言·javascript·node.js
橘子郡1234 分钟前
观察者模式和发布订阅模式对比,Java示例
java
指针满天飞5 分钟前
Collections.synchronizedList是如何将List变为线程安全的
java·数据结构·list
Java技术小馆6 分钟前
重构 Controller 的 7 个黄金法则
java·后端·面试
金銀銅鐵26 分钟前
[Java] 以 IntStream 为例,浅析 Stream 的实现
java·后端
William一直在路上36 分钟前
Python数据类型转换详解:从基础到实践
开发语言·python
看到我,请让我去学习1 小时前
Qt— 布局综合项目(Splitter,Stacked,Dock)
开发语言·qt
GUET_一路向前1 小时前
【C语言防御性编程】if条件常量在前,变量在后
c语言·开发语言·if-else·防御性编程
曳渔1 小时前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
三千道应用题2 小时前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf