groovy - 提取嵌套的 json 映射
问题描述
从一些 REST API 收到 JSON:
{
"advertiser_id": {
"8253":{
"name":"Signify",
"id":8253
},
"2920":{
"name":"Hyundai",
"id":2920
}
}
}
我不想在数字中提取映射8253
,2920
但是如果没有硬映射这些数字,它们可以随时不同。无论如何,这些数字只是id
在里面重复。
转换后的预期输出:
[
{
"name":"Signify",
"id":8253
},
{
"name":"Hyundai",
"id":2920
}
]
试过:
import groovy.json.*
def json = '''
'''
def p = new JsonSlurper().parseText(json)
def result = p["advertiser_id"].collectEntries{ k, v ->
[
id: v.id,
name: v.name
]
}
但它只返回一个“对象”:
{
"id": 8905,
"name": "Spotify"
}
下一个代码也得到了错误的结果:
def a = p["advertiser_id"].collectMany {
it.value.collect{ k, v ->
[
id: k,
name: v
]
}
}
解决方案
你想建立一个列表 - 所以你需要collect
而不是collectEntries
def p = new JsonSlurper().parseText(json)
def result = p["advertiser_id"].collect{ k, v ->
[
id: v.id,
name: v.name
]
}
并且您没有对嵌套对象进行任何转换-因此,您可以将代码简化为:
def result = p.advertiser_id.collect{ k, v -> v }
推荐阅读
- linux - `ls -l` 用于所有父目录
- python - 从图像中定位和打印文本
- html - 显示不同 HTML 页面(导航)的最佳方式是什么?
- c - 无符号整数的四舍五入,无溢出
- python - Python json 如何添加数据
- sql - 在sql中查询每年获得最多奖牌的运动员
- java - 获取请求错误 Springboot 到 Zillow Api
- python - 无法分配“'nimaaram'”:“Food.user”必须是 Django 中的“用户”实例
- javascript - JavaScript 将两个多维数组合并为唯一数组
- python - PyQt5 Designer对话框自动关闭..此代码无法访问