Text-Processing
使用 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
與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)
。將對象內容放入數組和
transpose
d 中,以便獲取包含每個對像元素的數組。結果然後通過
@csv
將數組轉換為逗號分隔字元串的運算符。