json - 用jq获取JSON中数组元素的索引

标签 json csv jq

我有以下类型的 json:

{
  "foo": "hello",
  "bar": [
    {
      "key": "k1",
      "val": "v1"
    },
    {
      "key": "k2",
      "val": "v2"
    },
    {
      "key": "k3",
      "val": "v3"
    }
  ]
}

我要输出以下内容:

"hello", 1, "k1", "v1"
"hello", 2, "k2", "v2"
"hello", 3, "k3", "v3"

我正在使用 jq 对此进行转换,答案也应该是使用 jq 转换。

我目前在:

echo '{"foo": "hello","bar": [{"key": "k1","val": "v1"},{"key": "k2","val": "v2"},{"key": "k3","val": "v3"} ]}' | jq -c -r '.bar[] as $b | [.foo, ($b | .key, .val)] | @csv'

这给了我:

"hello","k1","v1"
"hello","k2","v2"
"hello","k3","v3"

如何获取要显示的正在解析的数组元素的索引?

最佳答案

您可以将数组转换为条目以访问索引和值。然后您可以构建 CSV 行。

$ jq -r '[.foo] + (.bar | to_entries[] | [.key+1,.value.key,.value.val]) | @csv' input.json
"hello",1,"k1","v1"
"hello",2,"k2","v2"
"hello",3,"k3","v3"

关于json - 用jq获取JSON中数组元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233816/

相关文章:

json - jq 删除重复的对象之一

json - 根据内部对象的值等于外部对象的值过滤对象数组

android - 在 android 中处理动态数据类型

javascript - 列表/数组是有效的 JSON 吗?

arrays - PowerShell在CSV中查找重复项并输出不同的标题

csv - 如何在 Keras 中保存编码输出

python - 使用python计算tsv文件的列中单词的出现次数

json - 按键递归搜索值

java - 如何使用 RestEasy 框架发送多部分响应

javascript - 如何唯一标识一个表行?