もくじ
📝 はじめに
PowerShellで取得・加工したデータを、
「JSON形式で保存したい」
「APIに送信するためにJSONを作りたい」
という場面は非常によくあります。
そのときに使うのが
ConvertTo-Json です。
この記事では、PowerShellのオブジェクトをJSONとして書き出す基本から、
実務でつまずきやすい -Depth や保存方法までを分かりやすく解説します。
- 設定ファイル(config.json)を作成したい
- API送信用のJSONデータを生成したい
- PowerShellの結果をJSONとして保存したい
✅ このコマンドでできること(要点)
- PowerShellオブジェクトをJSON文字列に変換できる
- 配列や入れ子構造をJSONとして出力できる
- 整形された(インデント付き)JSONを生成できる
- Out-File などと組み合わせてファイル保存できる
✅ ConvertTo-Json でできること
ConvertTo-Json は、
PowerShellのオブジェクトを
JSON形式の文字列に変換するコマンドです。
変換結果は文字列になるため、
ファイルへの保存やAPI送信にそのまま利用できます。
似た用途の考え方としては「オブジェクトをJSONにシリアライズする」です。
🧩 基本構文
オブジェクト | ConvertTo-Json
▶ 基本的な使い方(まずこれだけ)
🔹 シンプルなオブジェクトをJSONに変換する
$obj = [pscustomobject]@{
name = "taro"
age = 20
}
$obj | ConvertTo-Json
実行すると、整形されたJSON文字列が出力されます。
🔹 JSONをファイルに保存する
$obj | ConvertTo-Json |
Out-File ".\output.json" -Encoding UTF8
JSONを書き出す場合は、
Out-File -Encoding と組み合わせるのが定番です。
🛠 よく使われる指定例
🔹 入れ子(ネスト)を含むデータを出力する(Depth)
$obj = [pscustomobject]@{
user = [pscustomobject]@{
name = "taro"
role = "admin"
}
}
$obj | ConvertTo-Json -Depth 5
- -Depth を指定しないと、深い階層が省略される場合があります。
🔹 配列データをJSONとして出力する
$items = Get-Process | Select-Object -First 3 Name, Id
$items | ConvertTo-Json -Depth 3
複数オブジェクトはJSON配列([])として出力されます。
💼 実務でよく使う使用例(応用)
🔹 CSV → JSON に変換して保存する
Import-Csv ".\data.csv" |
ConvertTo-Json -Depth 5 |
Out-File ".\data.json" -Encoding UTF8
🔹 API送信用のJSONデータを作成する
$payload = [pscustomobject]@{
title = "sample"
enabled = $true
}
$json = $payload | ConvertTo-Json -Depth 5
- Import-Csv:CSVからデータ取得
- Select-Object:項目の整理
- Out-File -Encoding:JSONを安全に保存
🧩 よくある勘違い・つまずきポイント
- ConvertTo-Jsonの結果は「文字列」であり、オブジェクトではない
- 入れ子構造は -Depth を指定しないと欠落することがある
- Format-Table など表示用コマンドの後では使いにくい
- 保存時の文字コードを指定しないと文字化けすることがある
⚠ エラー・うまく動かないときの確認ポイント
- -Depth が足りているか
- 変換対象が想定どおりオブジェクトになっているか
- 保存先パスと書き込み権限
- API送信時は相手側が期待するJSON形式か
🧠 注意点
JSONは相手(API・システム)が期待する構造が決まっている場合があります。
実務では、まず小さなデータで
ConvertTo-Json の出力を確認してから本番利用すると安心です。
📌 まとめ
- ConvertTo-Json はオブジェクトをJSON文字列に変換する
- 入れ子構造がある場合は -Depth を忘れない
- 保存は Out-File -Encoding とセットで行う
- ConvertFrom-Json と対で覚えると理解が深まる
🔎 PowerShellコマンドを探す
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- JSONを書き出したい
- JSONを読み込みたい(ConvertFrom-Json)
- 文字コードを指定して保存したい(Out-File -Encoding)
