ConvertFrom-Json
JSON 形式の文字列をカスタム オブジェクトに変換します。
構文
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
説明
このコマンドレットは ConvertFrom-Json
、JavaScript Object Notation (JSON) 形式の文字列を、JSON 文字列内の各フィールドのプロパティを持つカスタム PSObject または Hashtable オブジェクトに変換します。
JSON は、オブジェクトのテキスト表現を提供する Web サイトで広く使用されています。 コマンドレットは、JSON 文字列の各行を処理する新しいオブジェクトにプロパティを追加します。
JSON 標準では、PSObject 型と Hashtable 型では禁止されている重複するキー名を使用できます。 たとえば、JSON 文字列に重複するキーが含まれている場合、このコマンドレットでは最後のキーのみが使用されます。 以下の他の例を参照してください。
任意のオブジェクトから JSON 文字列を生成するには、コマンドレットを ConvertTo-Json
使用します。
このコマンドレットは、PowerShell 3.0 で導入されました。
Note
PowerShell 6 以降では、コマンドレットはコメント付きの JSON をサポートしています。 JSON コメントは、2 つのスラッシュ (//
) 文字で始まります。 JSON コメントは、コマンドレットによって出力されるオブジェクトにはキャプチャされません。 PowerShell 6 より前では、 ConvertFrom-Json
JSON コメントが発生したときにエラーが返されます。
例
例 1: DateTime オブジェクトを JSON オブジェクトに変換する
このコマンドでは、コマンドレットとコマンドレットをConvertTo-Json
使用して、DateTime オブジェクトをGet-Date
コマンドレットから JSON オブジェクトに変換し、次に PSCustomObject に変換します。ConvertFrom-Json
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
JSON コンテンツをオブジェクトに Invoke-RestMethod
自動的に変換するコマンドレットを使用することもできます。
例 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 |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
入力
JSON 文字列 ConvertFrom-Json
をパイプで .
出力
PSCustomObject
メモ
このConvertFrom-Json
コマンドレットは、JavaScriptSerializer クラスを使用して実装されます。
PSObject 型メイン JSON 文字列に表示されるプロパティの順序が含まれます。 キーと値のペアは JSON 文字列に表示される順序で Hashtable に追加されますが、Hashtable オブジェクトはその順序メイン含まれません。
関連リンク
PowerShell
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示