PowerShellで取得したJSONを解析する

PowerShell

PowerShellで取得したJSONを解析する

1. 課題背景と実務シナリオ

多くの業務システムでは、外部APIとの連携や設定ファイルの読み込みにJSON形式が利用されています。PowerShellを用いてこれらのJSONデータを取得し、必要な情報だけを抽出・加工する必要があるケースは頻繁に発生します。例えば、

  • Azure APIからのリソース情報取得: Azure Resource Graph APIから取得したJSONレスポンスから特定のリソース名や状態を抽出する。
  • CI/CDパイプラインでの設定ファイル読み込み: JSON形式の設定ファイルから、環境変数や実行するコマンドを動的に取得する。
  • サードパーティAPIとの連携: 外部サービスのAPIから返されたJSONデータから、必要なデータ項目を抽出し、業務システムに反映させる。

これらのシナリオにおいて、PowerShellで効率的にJSONを解析する技術は不可欠です。

2. GitHubや公式Docsでの調査結果

PowerShellにおけるJSONの解析には、ConvertFrom-Jsonコマンドレットが中心的に用いられます。

GitHubには、PowerShellでJSONを扱う様々なスクリプトが公開されていますが、具体的なURLはここでは省略します(検索キーワード:powershell json parsing)。

3. VBA / PowerShellでの実装コード(複数パターン)

3.1 簡易例

JSON文字列から特定のプロパティ値を取得するシンプルな例です。

$jsonString = '{"name": "John Doe", "age": 30, "city": "New York"}'
$jsonObject = $jsonString | ConvertFrom-Json
Write-Host "Name: $($jsonObject.name)"
Write-Host "Age: $($jsonObject.age)"

3.2 応用例:ネストされたJSONの処理

ネストされたJSON構造から、深い階層のプロパティにアクセスします。

$jsonString = '{"user": {"name": "Jane Doe", "address": {"street": "123 Main St", "city": "London"}}}'
$jsonObject = $jsonString | ConvertFrom-Json
Write-Host "Street: $($jsonObject.user.address.street)"

3.3 エラーハンドリング

ConvertFrom-Jsonは不正なJSON文字列を受け取るとエラーを返します。エラーハンドリングは必須です。

try {
  $jsonString = '{"name": "John Doe", "age": 30, "city": "New York"}'
  $jsonObject = $jsonString | ConvertFrom-Json
  Write-Host "Name: $($jsonObject.name)"
}
catch {
  Write-Error "Error parsing JSON: $($_.Exception.Message)"
}

4. 応用展開・類似課題との比較

PowerShell以外では、Pythonのjsonモジュール、JavaScriptのJSON.parse()、VBAのJsonConverterクラスなどがJSON解析に使用できます。Pythonは柔軟性が高く、複雑なJSON構造の処理に適しています。VBAは、ExcelマクロなどでJSONデータを利用する場合に有効です。

5. 注意点とベストプラクティス

  • 不正なJSON文字列の処理: ConvertFrom-Jsonは不正なJSONに対してエラーを返すため、常にtry-catchブロックでエラー処理を行うべきです。
  • 大規模なJSONデータ: 非常に大きなJSONデータの解析には、メモリ不足が発生する可能性があります。そのような場合は、ストリーミング処理などの工夫が必要になります。
  • JSONスキーマの利用: 複雑なJSON構造を扱う場合は、JSONスキーマを定義し、データの検証を行うことで、エラーを早期に検出できます。

6. まとめと実務ヒント

PowerShellのConvertFrom-Jsonコマンドレットは、JSONデータの解析を容易に行うための強力なツールです。エラーハンドリングと適切なデータ検証を組み合わせることで、堅牢かつ効率的なJSON処理を実現できます。明日からすぐに使えるように、上記コードを参考に、自社の業務システムに適用してみてください。 複雑なJSON構造に直面したら、一度Pythonなどの柔軟性の高い言語での処理を検討するのも良いでしょう。

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

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