jqコマンドでjsonをcsvファイルに出力する方法

技術

はじめに

今回は「jqコマンドでjsonをcsvファイルに出力する方法」を紹介します

前提

あらかじめjqライブラリをインストールしておいてください

Macでbrewが入っている場合は以下でインストールできます

brew install jq

jqコマンドでjsonをcsvファイルに変換・出力する方法

各json構造に対応したサンプルコマンドを以下に記載しますので、参考にしてみてください

JSONオブジェクト

JSON内容

{
  "name": "ichiro",
  "age": 20
}

サンプルコマンド

curl "http://localhost:8080/sample1" | jq -r '["name","age"], (.[] | [.name,.age]) | @csv' > sample1.csv

出力されたCSV

JSON配列

JSON内容

[
  {
    "name": "ichiro",
    "age": 20
  },
  {
    "name": "jiro",
    "age": 18
  },
  {
    "name": "saburo",
    "age": 16
  }
]

サンプルコマンド

curl "http://localhost:8080/sample2" | jq -r '["name","age"], (.[] | [.name,.age]) | @csv' > sample2.csv

出力されたCSV

ネストがあるJSON配列

JSON内容

[
  {
    "name": "ichiro",
    "age": 25,
    "jobs": [
      {
        "main": "engineer",
        "side": "writer"
      }
    ]
  },
  {
    "name": "jiro",
    "age": 24,
    "jobs": [
      {
        "main": "designer",
        "side": "uber eats"
      }
    ]
  },
  {
    "name": "saburo",
    "age": 23,
    "jobs": [
      {
        "main": "student",
        "side": "part time"
      }
    ]
  }
]

サンプルコマンド

curl "http://localhost:8080/sample3" | jq -r '["name","age","jobs_main","jobs_side"], (.[] | {name,age,jobs:.jobs[]} | [.name,.age,.jobs.main,.jobs.side])| @csv' > sample3.csv

出力されたCSV

👍 🎉

コメント

タイトルとURLをコピーしました