左に PowerShell を貼り付けて 「変換」 をクリックしてください — JSON に変換しますPowerShell コードを貼り付け

このツールでできること

PowerShell スクリプトから @{...} ハッシュテーブルをコピーして、シェルを開いて ConvertTo-Json にパイプせずに JSON 相当のものが欲しかった経験はありませんか。そのためのツールです。PowerShell を貼り付ければ、きれいな JSON が返ってきます。単一のハッシュテーブル、[PSCustomObject] インスタンス、配列を含むネストした @{} ブロック全体、どれにも対応しています。

出力は ConvertTo-Json -Depth 100 で得られるものと一致します。ハッシュテーブルも [PSCustomObject] もどちらも JSON オブジェクトになります。配列(@(1,2,3))は JSON 配列になります。$nullnull に、$true/$false は JSON のブール値になります。DateTime 値は ISO-8601 文字列として出力されます。PowerShell 7 と同じ規則です。

スペースや特殊文字を含むキーはクォートされたままになります。数値リテラル(423.14)は数値のまま。シングルクォート文字列もダブルクォート文字列も正しくパースされ、ダブルクォート内のエスケープシーケンス(`n`t)は解決されます。複数のトップレベル代入を貼り付けると、それぞれが出力 JSON のキーになり、変数名が使われます。

使い方

3 ステップです。2 キーのハッシュテーブルでも、丸ごと設定ブロックでも、同じように動きます。

1

PowerShell を貼り付ける(またはサンプルを試す)

左のエディタにスクリプトの断片を貼り付けてください。ハッシュテーブル[PSCustomObject]ネストした @{} ブロック、オブジェクトの配列 — どれでも OK です。サンプルを読み込む で現実的な注文データの例が表示されます。

整形する必要はありません — $variable のプレフィックス、[PSCustomObject] のキャスト、コメントもそのままで大丈夫です。

2

変換を押す

緑の 変換 ボタンをクリックしてください。ツールがハッシュテーブルをパースし、ネストした構造をすべて辿って、一回のパスで JSON を組み立てます。

3

JSON をコピーする

右側のパネルにインデントされた JSON が表示されます。ARM テンプレート、Invoke-RestMethod の本文、Pester テスト用の JSON フィクスチャなどに貼り付けてください。

実際に役立つ場面

REST API リクエストボディの構築

<code>Invoke-RestMethod</code> で送信するハッシュテーブルを用意して、先に JSON の形を確認したいとき。貼り付けて確認、そしてリリースです。

設定ハッシュテーブルを JSON ファイルに変換

チームが <code>.psd1</code> 設定ファイルを使っているけれど、新しいサービスは JSON を期待している。そんなときはハッシュテーブルを貼り付けて出力を <code>config.json</code> として保存してください。

ARM / Bicep のパラメータファイル

ARM テンプレートのパラメータは JSON ですが、先に PowerShell のハッシュテーブルで組み立てることはよくあります。一度変換して JSON をコミットすれば済みます。

下流のツールにデータを渡す

PowerShell の CI スクリプトから Python、Node、または stdin で JSON を受け取るコンテナコマンドに構造化データを渡したいケースがあります。まさにその橋渡しです。

よくある質問

ConvertTo-Json の出力と一致しますか?

はい — ConvertTo-Json -Depth 100 -Compress:$false との整合性を目指しています。ハッシュテーブルも [PSCustomObject] オブジェクトも JSON オブジェクトになり、配列は JSON 配列、$null$true$false は通常どおりマッピングされます。

[PSCustomObject] と普通のハッシュテーブルの違いは?

どちらも同じ JSON オブジェクトに変換されます。[PSCustomObject] はプロパティの順序を保持します。このツールもそれを尊重します。普通のハッシュテーブルはデフォルトでアルファベット順 — ConvertTo-Json と同じです。

スクリプト全体を貼り付けてもいいですか?

はい、ただし出力に含まれるのはトップレベルの $variable = @{...}[PSCustomObject]@{...} 代入だけです。関数定義、制御フロー、コマンドレット呼び出しは無視されます。トップレベルの変数はそれぞれ JSON のキーになり、変数名が使われます。

日付と数値の扱いは?

[DateTime]Get-Date の出力は ISO-8601 文字列として出力されます。数値リテラル([decimal] を含む)は JSON の数値のままです。生の文字列として貼り付けた日付は文字列のまま保持されます。

コードは保存されますか?

変換のためにバックエンドに送信されますが、保存はされません — ペイロードはログに残しません。ハッシュテーブルにシークレットが含まれている場合は、貼り付ける前に編集してください。

ヒアストリングや複数行の文字列値に対応していますか?

はい。@"..."@@'...'@ のヒアストリングは、改行エンコードを保ったまま JSON 文字列として保持されます。

他にも役立つツール

PowerShell から JSON は、他のツールとも相性が良いです: