java - 有没有办法从 HashMap 中获取 HashMap 的 ArrayList 的值列表?
问题描述
我想从第三方 API 获得的响应中获取数据传输对象列表。第三方API的响应结构如下:
Map<String,Object>
{
{
String -> ArrayList{
<Key,Value(DTO)>,
<Key,Value(DTO)>,
<Key,Value(DTO)>,
...
}
},
{
String -> Hashmap
}
}
响应类型:Map(String,Object)
我有两个键值对。1(字符串,ArrayList(HashMap(s)...)),2(字符串,HashMap)
现在我想要ArrayList的所有HashMaps的值列表。
我希望列表为:
List<DTO>{
{
"key":"value",
"key":"value"
},
{
"key":"value",
"key":"value",
"key":"value",
"key":"value"
}
}
来自 api 的示例响应:
{ "one": [ 0 : { "id":"435453ty5g8437t5g734tr", "name":"name1", "address":"add", "field":"new field" }, 1: { "id":"4fr74g8fg48346rt83486tf", "name":"name2", "address":"add1", "field":"new field22" } ],
"meta": { "current_page":1, "records_per_page":20, "total_records":null } }
我需要什么:
[ { "id":"435453ty5g8437t5g734tr", "name":"name1", "address":"add", "field":"new field" },
{ "id":"4fr74g8fg48346rt83486tf", "name":"name2", "address":"add1", "field":"new field22" } ]
解决方案
你可以 :
- 过滤值为 a 的条目
List
- 地图从
Object
到List<Map<String, DTO>>
flatMap
将所有地图放在同一个流中- 收集所有
这是未经检查的版本,用于List
List<Map<String, DTO>> result =
content.values().stream()
.filter(value -> value instanceof List)
.map(value -> (List<Map<String, DTO>>) value)
.flatMap(List::stream)
.collect(Collectors.toList());
System.out.println(result);
推荐阅读
- r - 如何在闪亮折线图R中进行数据集的反应功能
- ios - 有什么方法可以在 iOS Swift 中获取已连接 wifi 的 ssid?
- javascript - 上传前缩小图片大小
- vba - 将表单记录源从库表单设置为应用表
- vuejs2 - Vue-Jest(Jest 单元测试):SyntaxError:无法在模块外使用导入语句
- python - 关于 Windows 10 命令提示符中的 python virtualenv
- .htaccess - 如何使用 php 中的 .htacces 文件将 https 重定向到 http
- vue.js - 如何使用 vuetify 在 v 视差图像上制作渐变?
- python - 使用 Python 和 tkinter 根据传感器输入输出一行文本
- javascript - 如何使用jQuery从上到下为div元素设置动画?