使用 JQ 将数组的 JSON 转换为带有标头的 CSV

使用 JQ 将数组的 JSON 转换为带有标头的 CSV

我得到 Json 作为列 ID 和数组 -

  {
      "ObjectID": [
        0,
        1,
        2,
        3,
        4
      ],
      "Name": [
        "Apple",
        "Orange",
        "Grape",
        "Banana",
        "Jackfruit"
      ],
      "Color": [
        "Red",
        "Orange",
        "Green",
        "Yellow",
        "null"
      ],
      "Acidity": [
        3.9,
        3.5,
        2.99,
        6,
        5.0
      ]
    }

我正在尝试使用 jq 将其转换为纯 CSV 格式,例如 -

ObjectID,Name,Color,Acidity
0,Apple,Red,3.9
1,Orange,Orange,3.5
2,Grape,Green,2.99
3,Banana,Yellow,6
4,Jackfruit,null,5.0

相关问题使用 JQ 将 JSON 导出为带有标头的 CSV 。最好寻找通用答案。

答案1

在玩完给定的答案后回答我自己的问题,json 数组的通用解决方案

jq --raw-output 'to_entries|map(.key),(map(.value)|transpose[])|@csv'   

答案2

使用该函数的解决方案transpose

<file jq -r '(to_entries|map(.key)),([.ObjectID,.Name,.Color,.Acidity]|transpose|.[])|@csv'

使用 提取对象名称to_entries|map(.key)

对象内容放入数组和transposed 中,以便获取包含每个对象元素的数组。

然后,结果将通过@csv运算符将数组转换为逗号分隔的字符串。

相关内容