Text-Processing

使用 JQ 將數組的 JSON 轉換為帶有標題的 CSV

  • January 30, 2020

我將 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

Export JSON to CSV with Headers using JQ相關的問題 。尋找最好的通用答案。

在使用給定答案後回答我自己的問題,json 數組的通用解決方案

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

使用該transpose功能的解決方案:

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

使用 提取對象名稱to_entries|map(.key)

將對象內容放入數組和transposed 中,以便獲取包含每個對像元素的數組。

結果然後通過@csv將數組轉換為逗號分隔字元串的運算符。

引用自:https://unix.stackexchange.com/questions/564995