任何JQ内置函数返回JSON数组中元素的索引?

Bob*_*one 7 arrays json jq

我从输入JSON文件创建了一个csv输出.

由于一些JSON数组没有自己的id,我需要在我的csv输出中添加一个唯一的id,它将基于其JSON数组中当前元素的索引.

是否有任何内置的JQ函数返回元素索引?

Jos*_*uss 7

to_entries 应该完美.

jq -n '["a","b","c"] | to_entries'
Run Code Online (Sandbox Code Playgroud)

会产生

[{"key":0,"value":"a"},{"key":1,"value":"b"},{"key":2,"value":"c"}]
Run Code Online (Sandbox Code Playgroud)


pea*_*eak 6

有两个强大的(即,在jq 1.3,1.4和1.5中工作)方法迭代一个带索引的数组:一个是使用keys [](可以在数组和对象上工作),另一个是使用范围/ 2.假设$ a是一个数组,这两种方法可以说明如下:

($a | keys[]) as $i | [$i, $a[$i]] 

range(0; $a | length) as $i | [$i, $a[$i]]
Run Code Online (Sandbox Code Playgroud)

或者更简洁:

$a | keys[] as $i | [$i, .[$i]]

$a | range(0;length) as $i | [$i, .[$i]]
Run Code Online (Sandbox Code Playgroud)

如果您的jq有keys_unsorted,您可能希望使用它.

(索引/ 1可能不是这里需要的.)


Jef*_*ado -3

从 jq 1.4 开始,有index/1或如手册indices/1中所述。