这里还有一些方法。假设input.json
包含您的数据
["a", "b"]
你调用 jq 作为
jq -M -c -f filter.jq input.json
然后filter.jq
将生成以下任何过滤器
{"name":"a","index":0}
{"name":"b","index":1}
1)使用键和foreach
foreach keys[] as $k (.;.;[$k,.[$k]])
| {name:.[1], index:.[0]}
编辑:我现在意识到表单的过滤器foreach E as $X (.; .; R)
几乎总是可以重写,E as $X | R
所以上面真的只是
keys[] as $k
| [$k, .[$k]]
| {name:.[1], index:.[0]}
可以简化为
keys[] as $k
| {name:.[$k], index:$k}
2)使用键和转置
[keys, .]
| transpose[]
| {name:.[1], index:.[0]}
3) 使用函数
def enumerate:
def _enum(i):
if length<1
then empty
else [i, .[0]], (.[1:] | _enum(i+1))
end
;
_enum(0)
;
enumerate
| {name:.[1], index:.[0]}