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 |
入力
JSON 文字列を に ConvertFrom-Json
パイプできます。
出力
PSCustomObject
メモ
コマンドレットは ConvertFrom-Json
、 JavaScriptSerializer クラスを使用して実装されます。
PSObject 型は、JSON 文字列に表示されるプロパティの順序を維持します。 キーと値のペアは JSON 文字列に表示される順序で Hashtable に追加されますが、 Hashtable オブジェクトはその順序を維持しません。
関連リンク
フィードバック
フィードバックの送信と表示