CSV を JSON にするシンプルな方法を試してみた

検証用のサンプルデータを用意したい場合、世の中に求めている形式でデータがあれば良いのですが、CSV 形式のデータは見つかったが JSON 形式のデータは見つからなかった、などは悩みどころです。プログラムが書けるので CSV ファイルを読み込みパースして、JSON 形式で出力するば良いのですが、データ形式をシンプルに変換する方法は無いかと探したところ、Powershell のコマンドがありました。という事で、CSV 形式のファイルから JSON 形式のファイルを作成するシンプルな方法を試してみました。

CSV サンプルデータを用意

input.csv というファイル名で用意します。

no,name,type,price
1,リンゴ,果物,150
2,バナナ,果物,80
3,オレンジ,果物,120
4,白菜,野菜,50
5,キャベツ,野菜,60
6,玉ねぎ,野菜,40
7,牛肉,肉類,500
8,豚肉,肉類,300
9,鶏肉,肉類,400
10,牛乳,乳製品,200

Powershell コマンドを実行

Get-Content input.csv | ConvertFrom-Csv | ConvertTo-Json > output.json

作成された JSON を確認

output.json をエディタで開きます。

[
  {
    "no": "1",
    "name": "リンゴ",
    "type": "果物",
    "price": "150"
  },
  {
    "no": "2",
    "name": "バナナ",
    "type": "果物",
    "price": "80"
  },
  {
    "no": "3",
    "name": "オレンジ",
    "type": "果物",
    "price": "120"
  },
  {
    "no": "4",
    "name": "白菜",
    "type": "野菜",
    "price": "50"
  },
  {
    "no": "5",
    "name": "キャベツ",
    "type": "野菜",
    "price": "60"
  },
  {
    "no": "6",
    "name": "玉ねぎ",
    "type": "野菜",
    "price": "40"
  },
  {
    "no": "7",
    "name": "牛肉",
    "type": "肉類",
    "price": "500"
  },
  {
    "no": "8",
    "name": "豚肉",
    "type": "肉類",
    "price": "300"
  },
  {
    "no": "9",
    "name": "鶏肉",
    "type": "肉類",
    "price": "400"
  },
  {
    "no": "10",
    "name": "牛乳",
    "type": "乳製品",
    "price": "200"
  }
]

やってみて分かった事

Powershell のコマンドは、Get-Content で CSV ファイルの中身を読み込み、次に CSV 形式のオブジェクトデータに変換して、その後 JSON 形式のテキストに変換しており、データ量が少ない場合は気にならないのですが、データ量が多いと少々時間がかかります。データ量が多い場合は、プログラムを書いた方が良さそうな気がしました。

参考

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/get-content?view=powershell-7.4

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/convertfrom-csv?view=powershell-7.4

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-7.4

タグ: