2023年4月17日月曜日

PowerShellを使ってCSVファイルをJSONファイルに変換する方法(ついでにXMLも)

前回CSVファイルを読み込んで編集する方法を紹介しました。

今回はそのCSVで読み込んだデータをJsonに変換して出力するやり方です。

実は調べてみたら超簡単でした。

1.CSVファイルの読み込み

まずは前回同様CSVファイルを読み込みます。

$streamReader = New-Object System.IO.StreamReader("C:\tmp\input.csv", [System.Text.Encoding]::GetEncoding("Shift_JIS"))
$content = $streamReader.ReadToEnd()
$streamReader.Close()
Set-Content -Path "C:\tmp\converted_input.csv" -Value $content -Encoding "UTF8"
$csvData = Import-Csv -Path "C:\tmp\converted_input.csv"

※もちろんエンコードは適宜必要に応じて修正してください。

2.Jsonデータに変換

次のコマンドで読み込んだデータをJson形式に変換します。

$jsonData = $csvData | ConvertTo-Json

3.JSONデータをファイルに保存

最後に、変換したJSONデータをファイルに保存します。以下のコマンドをPowerShellに入力してください。

Set-Content -Path "C:\tmp\output.json" -Value $jsonData

はいこれだけです。たったこれだけでCSVをJSONに変換できました。


凄いなやっぱり。ChatgptなどのAIと言いOS自体の機能と言い、最近のIT環境の生産性というか便利さが昔とは比べ物にならない水準に到達してきている気がする。

基礎も大事だけど最新のツールをどんどんキャッチアップしていかないと、一部の天才技術者だけではなく、普通の技術者も最新のツールを知らない技術者の10倍=10人分のアウトプットを出せる日がもうそこまで来ている。というかすでに来ているのかもしれない。

4.おまけ、CSVファイルをXMLに変換する

Jsonに変換できたという事は、XMLにも変換できるのでは?という事でステップ「2.」を以下のコマンドに置き換えてみると

$jsonData = $csvData | ConvertTo-Xml

なぜかうまく行かず。

XMLを出力するにはこちらが必要なようでした。

$csvData | Export-Clixml -Path C:\tmp\output.xml

理由をChatgptに聞いてみたら、↓という事でした。

ConvertTo-Xmlコマンドレットは、PowerShellのオブジェクトをXML形式に変換するためのコマンドレットです。しかし、Import-Csvコマンドレットによって作成されたオブジェクトは、CSVファイルから生成されたテーブル形式のデータであるため、ConvertTo-Xmlコマンドレットが適用できません。

まぁ要するに$csvDataはオブジェクトではあるけどConvertTo-Xmlが想定する形式にはなってないって事ですかね。

0 件のコメント:

ウェブサイトのURLにおけるトレイリングスラッシュの解釈と有無による動作の違い

インターネットが現代社会におけるコミュニケーションの基盤となっている今日、ウェブサイトのURLはビジネスや個人ブランディングにとって重要な役割を果たしています。URLは単にウェブページへの経路を示すだけでなく、SEO(検索エンジン最適化)においても重要な要素です。この記事では、U...