jq コマンドで JSON を CSV に変換

jq コマンドで JSONCSV に変換する

jq -r '<CSV 形式で出力したい要素を取り出すフィルター> | @csv'

テストデータの確認

f:id:mkyosuke:20200313110846p:plain

jq -r '<CSV 形式で出力したい要素を取り出すフィルター> | @csv' 実行

f:id:mkyosuke:20200313111419p:plain

 

 

|@csv を有効に使うための条件

JSON(配列)の並びにする

JSON(配列)の並びの、各配列の要素数は同じにする

JSON(配列)の並びの、各配列の要素は配列とオブジェクト以外にする

 

テストデータ

f:id:mkyosuke:20200313112739p:plain

'.' で入力されたJSONを整形して出力

f:id:mkyosuke:20200313112936p:plain

 

JSONの最上位が配列の場合、 .[] で配列の要素のみを取り出すことが出来る

f:id:mkyosuke:20200313114731p:plain

id の値を取り出し

f:id:mkyosuke:20200313115000p:plain

複数の値の取り出し

f:id:mkyosuke:20200313115352p:plain

共通部分のくくりだし

f:id:mkyosuke:20200313132510p:plain

.id と .create_at を [ と ] で囲む事により、 .id を0番目、 .create_at を1番目の要素に持つ配列にする

f:id:mkyosuke:20200313132821p:plain

配列から特定の値を取り出す

f:id:mkyosuke:20200313133052p:plain

1列目: id
2列目:ミドルネーム
3列目:作成日
となる CSVを出力

f:id:mkyosuke:20200313133914p:plain

参考

https://medium.com/veltra-engineering/jq-supports-json-to-csv-fb5c951a9575