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演算子を使用して、配列内のカンマ区切り文字列に変換されます。

関連情報