もくじ
📝 はじめに
PowerShellでAPI連携や設定ファイルを扱っていると、
JSON形式のデータを読み込む場面がよくあります。
「JSONファイルの中身を確認したい」
「JSONをPowerShellで扱いやすい形にしたい」
そんなときの基本となるのが
ConvertFrom-Json です。
この記事では、JSONをPowerShellオブジェクトとして読み込む基本から、
実務でつまずきやすいポイントまでを順を追って解説します。
- JSON形式の設定ファイルを読み込みたい
- APIのレスポンス(JSON)を解析したい
- JSONの中身を条件で抽出・加工したい
✅ このコマンドでできること(要点)
- JSON文字列をPowerShellオブジェクトに変換できる
- ネスト(入れ子)構造のJSONも扱える
- 配列形式のJSONをそのまま処理できる
- Where-Object や Select-Object と組み合わせられる
✅ ConvertFrom-Json でできること
ConvertFrom-Json は、
JSON形式の文字列を
PowerShellのオブジェクトに変換するコマンドです。
変換後は、$obj.name のように
プロパティとして値を参照できるため、
JSONを「データ」として直感的に扱えるようになります。
🧩 基本構文
"{ 'name':'taro', 'age':20 }" | ConvertFrom-Json
JSON文字列をパイプで渡すのが基本形です。
▶ 基本的な使い方(まずこれだけ)
🔹 JSON文字列をオブジェクトに変換する
$json = '{ "name": "taro", "age": 20 }'
$obj = $json | ConvertFrom-Json
$obj.name
$obj.age
プロパティとして値が取得できれば成功です。
🔹 JSONファイルを読み込む
Get-Content ".\config.json" -Raw | ConvertFrom-Json
JSONファイルは複数行になっていることが多いため、
-Raw を付けて
1つの文字列として読み込むのが安定します。
🛠 よく使われる指定例
🔹 配列形式のJSONを扱う
$json = '[{"name":"a"},{"name":"b"}]'
$items = $json | ConvertFrom-Json
$items[0].name
複数要素がある場合は配列として扱われます。
🔹 ネスト(入れ子)構造を辿る
$json = '{ "user": { "name": "taro", "role": "admin" } }'
$obj = $json | ConvertFrom-Json
$obj.user.name
💼 実務でよく使う使用例(応用)
🔹 JSONから条件に合うデータだけ抽出
$data = Get-Content ".\data.json" -Raw | ConvertFrom-Json
$data | Where-Object status -eq "ok"
🔹 APIレスポンスを処理する
$res = Invoke-RestMethod "https://example.com/api"
$res | Select-Object -First 5
- Get-Content -Raw:JSONファイルを読み込む
- Where-Object:条件で抽出
- Select-Object:必要な項目だけ表示
🧩 よくある勘違い・つまずきポイント
- JSONをそのまま Get-Content しただけでは変換できないことがある
- -Raw を付け忘れるとエラーになる場合がある
- 配列と単一オブジェクトで扱い方が変わる
- キー名はそのままプロパティ名になる
- JSONが不正な形式だと変換できない
⚠ エラー・うまく動かないときの確認ポイント
- JSONの構文が正しいか(カンマや括弧の不足)
- ファイル読み込み時に -Raw を付けているか
- 文字コードの影響で記号が崩れていないか
- すでにオブジェクトになっているデータを二重変換していないか
🧠 注意点
JSONの構造が複雑な場合、
いきなり処理を書かずに
Select-Object -First や
Get-Member で
形を確認してから進めると安全です。
📌 まとめ
- ConvertFrom-Json はJSONをオブジェクトに変換する
- JSONファイルは Get-Content -Raw と組み合わせる
- ネストや配列もそのまま扱える
- 次は ConvertTo-Json とセットで覚えると便利
🔎 PowerShellコマンドを探す
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- JSONを読み込みたい
- JSONを書き出したい(ConvertTo-Json)
- APIレスポンスを扱いたい
