java - 如何访问嵌套Json中的元素(Map) 数据并使用 java.util.stream 修改数据
问题描述
我想使用 java.util.stream 修改嵌套 json (Map<String, Object>) 中的数据。
这是 Json 数据
{
"schoolId": "10928391",
"schoolName": "school A",
"teachers" : [
{
"teacherId": "00001",
"teacherName:": "teacher A",
"subject": "Computer Science",
"lectures": [
{
"id": "CS102",
"name": "Algorithm"
},
{
"id": "CS330",
"name": "Data Communications and Networking"
}
]
},
{
"teacherId": "00002",
"teacherName:": "teacher B",
"subject": "Computer Science",
"lectures": [
{
"id": "CS103",
"name": "Data Structure"
},
{
"id": "CS104",
"name": "Data Structures in C++"
}
]
},
{
"teacherId": "00003",
"teacherName:": "teacher C",
"subject": "Computer Science",
"lectures": [
{
"id": "CS100",
"name": "Introduction to Programming (Java)"
},
{
"id": "CS401",
"name": "Object Oriented Programming"
}
]
}
]
}
--
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> schoolInfo = mapper.converValue(restTemplate.exchange(url, HttpMethod.GET, .... ).getBody(), HashMap.class);
上面的 Json 数据在 schoolInfo 里面
我要访问和修改的数据是讲座。我试图修改讲座(数组)中的所有元素。
例如,
"lectures": [
{
"id": "CS102",
"name": "Algorithm"
},
{
"id": "CS330",
"name": "Data Communications and Networking"
}
]
替换讲座数据中的所有讲座信息,如下所示。
"lectures": [
{
"lectureId": "CS102",
"lectureName": "Algorithm",
"lectureRoom": "Room A-1"
},
{
"lectureId": "CS330",
"lectureName": "Data Communications and Networking",
"lectureRoom": "Room A-2"
}
]
使用地图,过滤器我可以访问“教师”对象,但我不知道如何在“教师”中获取“讲座”对象
System.out.println(jsonMap.entrySet().stream()
.filter(map -> map.getKey().equals("teachers")).collect(Collectors.toList()).toString());
任何建议都会非常有帮助!
解决方案
推荐阅读
- javascript - 带有 CoC + Neovim 的 GraphQL LSP
- codeigniter-4 - CodeIgniter 4:$this->post 调用失败
- python - 在 100 台机器上记录远程 Python 脚本执行并将结果发送回通用日志文档
- python - postgresql - 使用 Base 64 编码选项从文件复制到表命令
- php - 如何在laravel中显示来自3个不同表的数据
- laravel - call_user_func_array() 期望参数 1 是一个有效的回调,类 'Google\Client' 没有方法 'getVideoInfo'
- angular - 不要获取我试图从服务器获取的所有数据
- php - Copy() 函数在使用 php 代码上传图像时出错
- amazon-web-services - 通过 VPC 端点 (AWS) 从 VPC 外部连接到 RDS(在 VPC 中)
- arrays - Excel公式:从非唯一值的表/数组中选择一个值