[英]jq: Map from nested JSON
我有以下 JSON:
{
"A": {
"type": "string",
"value": "value_A"
},
"B": {
"type": "string",
"value": "value_B"
}
}
...并尝试使用 JQ 来产生以下结果:
所需 Output
{
"A": "value_A",
"B": "value_B"
}
...其中键采用node.value
的直接值。
我目前的尝试:
.[] | {value}
...返回以下内容:
{
"value": "value_A"
}
{
"value": "value_B"
}
如何使用 JQ 生产所需的 JSON?
with_entries
帮助:
with_entries(.value |= .value)
to_entries | map(.value |=.value) | from_entries
to_entries | map(.value |=.value) | from_entries
to_entries
将形式为{a:b}
的 object 转换为形式为[{key:a, value:b}]
的数组,因此在您的示例中:
{
"key": "A",
"value": {
"type": "string",
"value": "value_A"
}
}
.value |=.value
然后将.value.value
的内容分配给.value
,留下:
{
"key": "A",
"value": "value_A"
}
然后由 from_entries 再次转换为from_entries
(从上面重复: with_entries(f)
等效于from_entries|map(f)|from_entries
)
使用 function map_values()
:
map_values(.value)
它运行作为参数传递给输入 object 的每个值的过滤器,收集结果并将它们与输入 object 的键相关联,并返回 object。
上网查一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.