ConvertFrom-Json

JSON 形式の文字列をカスタム オブジェクトに変換します。

構文

ConvertFrom-Json
                [-InputObject] <String>
                [<CommonParameters>]

説明

このコマンドレットは ConvertFrom-Json 、JavaScript Object Notation (JSON) 形式の文字列を、JSON 文字列内の各フィールドのプロパティを持つカスタム PSObject または Hashtable オブジェクトに変換します。 JSON は、オブジェクトのテキスト表現を提供する Web サイトで広く使用されています。 コマンドレットは、JSON 文字列の各行を処理する新しいオブジェクトにプロパティを追加します。

JSON 標準では、重複するキー名を使用できます。 これは、PSObject の終了 ハッシュテーブル 型では禁止されています。 たとえば、JSON 文字列に重複するキーが含まれている場合、このコマンドレットでは最後のキーのみが使用されます。 以下の他の例を参照してください。

任意のオブジェクトから JSON 文字列を生成するには、 コマンドレットを ConvertTo-Json 使用します。

このコマンドレットは、PowerShell 3.0 で導入されました。

注意

PowerShell 6 以降では、コマンドレットはコメント付きの JSON をサポートしています。 JSON コメントは、2 つのスラッシュ (//) 文字で始まります。 JSON コメントは、 コマンドレットによって出力されるオブジェクトにはキャプチャされません。 PowerShell 6 より前では、 ConvertFrom-Json JSON コメントが見つかったときにエラーが返されていました。

例 1: DateTime オブジェクトを JSON オブジェクトに変換する

このコマンドでは、 ConvertTo-Json コマンドレットと ConvertFrom-Json コマンドレットを使用して 、DateTime オブジェクトを Get-Date コマンドレットから JSON オブジェクトに変換し、 次に PSCustomObject に変換します

Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json

DisplayHint : 2
DateTime    : Friday, January 13, 2012 8:06:31 PM
Date        : 1/13/2012 8:00:00 AM
Day         : 13
DayOfWeek   : 5
DayOfYear   : 13
Hour        : 20
Kind        : 2
Millisecond : 400
Minute      : 6
Month       : 1
Second      : 31
Ticks       : 634620819914009002
TimeOfDay   : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year        : 2012

この例では、 コマンドレットを Select-Object 使用して DateTime オブジェクトのすべてのプロパティを取得します。 コマンドレットを ConvertTo-Json 使用して DateTime オブジェクトを JSON オブジェクトとして書式設定された文字列に変換し、コマンドレットを ConvertFrom-Json 使用して JSON 形式の文字列を PSCustomObject オブジェクトに変換します。

例 2: Web サービスから JSON 文字列を取得し、PowerShell オブジェクトに変換する

このコマンドでは、 コマンドレットを Invoke-WebRequest 使用して Web サービスから JSON 文字列を取得し、 コマンドレットを ConvertFrom-Json 使用して JSON コンテンツを PowerShell で管理できるオブジェクトに変換します。

# Ensures that Invoke-WebRequest uses TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$j = Invoke-WebRequest 'https://api.github.com/repos/PowerShell/PowerShell/issues' | ConvertFrom-Json

また、 コマンドレットを Invoke-RestMethod 使用して、JSON コンテンツをオブジェクトに自動的に変換することもできます。

例 3: JSON 文字列をカスタム オブジェクトに変換する

この例では、 コマンドレットを ConvertFrom-Json 使用して JSON ファイルを PowerShell カスタム オブジェクトに変換する方法を示します。

Get-Content -Raw JsonFile.JSON | ConvertFrom-Json

コマンドは、Get-Content コマンドレットを使用して JSON ファイル内の文字列を取得します。 Raw パラメーターは、ファイル全体を 1 つの JSON オブジェクトとして返します。 次に、パイプライン演算子を使用して、区切られた文字列をコマンドレットに ConvertFrom-Json 送信し、それをカスタム オブジェクトに変換します。

パラメーター

-InputObject

JSON オブジェクトに変換する JSON 文字列を指定します。 文字列が格納されている変数を入力するか、文字列を取得するコマンドまたは式を入力します。 文字列を に ConvertFrom-Jsonパイプすることもできます。

InputObject パラメーターは必須ですが、その値に空の文字列を指定できます。 入力オブジェクトが空の文字列の場合、 ConvertFrom-Json 出力は生成されません。 InputObject 値を に$nullすることはできません。

Type:String
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

入力

String

JSON 文字列を に ConvertFrom-Jsonパイプできます。

出力

PSCustomObject

メモ

コマンドレットは ConvertFrom-JsonJavaScriptSerializer クラスを使用して実装されます。

PSObject 型は、JSON 文字列に表示されるプロパティの順序を維持します。 キーと値のペアは JSON 文字列に表示される順序で Hashtable に追加されますが、 Hashtable オブジェクトはその順序を維持しません。