我有这样的东西:
jq --arg START 10 '[.z[] | select(has("name")) | {id: $START | tonumber, name}]'
转换为带有“name”键的对象数组,附加增量 id,输出:
[
{
id: 10,
name: "stuff"
},
{
id: 10,
name: "more stuff"
}
]
如何增加 START arg 以使第二个对象的 id 为 11 等等?
编辑:我应该发布原始的 json:
{
"u": "stuff",
"x": [1,2,3],
"y": {
"field": "value"
},
"z": {
"stuffWithoutName": {
"ex": "stuff"
},
"zz": {
"name": "change me",
"more": "stuff"
},
"randomKey": {
"name": "change me",
"random": "more stuff"
}
}
}
谢谢!
最佳答案
您可以使用to_entries
,当给定一个数组时,它将给出每个项目的索引:
jq --arg START 10 '($START | tonumber) as $s
| [.z[] | select(has("name"))]
| to_entries
| map({name:.value.name, id: ($s + .key) })'
这样,id
就会从10 + 0
变为10 + n
关于json - 增加 jq 中的 arg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431965/