Freigeben über


ConvertFrom-Json

Konvertiert eine JSON-formatierte Zeichenfolge in ein benutzerdefiniertes Objekt.

Syntax

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

Beschreibung

Das ConvertFrom-Json Cmdlet konvertiert eine JSON-formatierte Zeichenfolge (JavaScript Object Notation) in ein benutzerdefiniertes PSCustomObject-Objekt , das über eine Eigenschaft für jedes Feld in der JSON-Zeichenfolge verfügt. JSON wird häufig von Websites verwendet, um eine Textdarstellung der Objekte bereitzustellen. Der JSON-Standard verbietet nicht die Verwendung, die mit einem PSCustomObject verboten ist. Wenn die JSON-Zeichenfolge beispielsweise doppelte Schlüssel enthält, wird nur der letzte Schlüssel von diesem Cmdlet verwendet. Weitere Beispiele finden Sie unten.

Verwenden Sie das ConvertTo-Json Cmdlet, um eine JSON-Zeichenfolge aus einem beliebigen Objekt zu generieren.

Dieses Cmdlet wurde in PowerShell 3.0 eingeführt.

Hinweis

Dieses Cmdlet unterstützt JSON mit Kommentaren nicht.

Beispiele

Beispiel 1: Konvertieren eines DateTime-Objekts in ein JSON-Objekt

Dieser Befehl verwendet die ConvertTo-Json Cmdlets und ConvertFrom-Json , um ein DateTime-Objekt aus dem Get-Date Cmdlet in ein JSON-Objekt und dann in ein PSCustomObject zu konvertieren.

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

Im Beispiel wird das Select-Object Cmdlet verwendet, um alle Eigenschaften des DateTime-Objekts abzurufen. Es verwendet das ConvertTo-Json Cmdlet, um das DateTime-Objekt in eine Zeichenfolge zu konvertieren, die als JSON-Objekt formatiert ist, und das ConvertFrom-Json Cmdlet, um die JSON-formatierte Zeichenfolge in ein PSCustomObject-Objekt zu konvertieren.

Beispiel 2: Abrufen von JSON-Zeichenfolgen aus einem Webdienst und Konvertieren in PowerShell-Objekte

Dieser Befehl verwendet das Invoke-WebRequest Cmdlet, um JSON-Zeichenfolgen aus einem Webdienst abzurufen. Anschließend wird das ConvertFrom-Json Cmdlet verwendet, um JSON-Inhalte in Objekte zu konvertieren, die in PowerShell verwaltet werden können.

# 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

Sie können auch das Invoke-RestMethod Cmdlet verwenden, das JSON-Inhalte automatisch in Objekte konvertiert.

Beispiel 3: Konvertieren einer JSON-Zeichenfolge in ein benutzerdefiniertes Objekt

In diesem Beispiel wird gezeigt, wie Sie mithilfe des ConvertFrom-Json Cmdlets eine JSON-Datei in ein benutzerdefiniertes PowerShell-Objekt konvertieren.

Get-Content JsonFile.JSON | ConvertFrom-Json

Der Befehl verwendet Get-Content Cmdlet, um die Zeichenfolgen in einer JSON-Datei abzurufen. Anschließend wird der Pipelineoperator verwendet, um die durch Trennzeichen getrennte Zeichenfolge an das ConvertFrom-Json Cmdlet zu senden, das sie in ein benutzerdefiniertes Objekt konvertiert.

Parameter

-InputObject

Gibt die JSON-Zeichenfolgen an, die in JSON-Objekte konvertiert werden sollen. Geben Sie eine Variable ein, die die Zeichenfolge enthält, oder geben Sie einen Befehl oder Ausdruck ein, der die Zeichenfolge abruft. Sie können auch eine Zeichenfolge an pipen ConvertFrom-Json.

Der InputObject-Parameter ist erforderlich, sein Wert kann jedoch eine leere Zeichenfolge sein. Wenn das Eingabeobjekt eine leere Zeichenfolge ist, ConvertFrom-Json generiert keine Ausgabe. Der InputObject-Wert darf nicht sein $null.

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

Eingaben

String

Sie können eine JSON-Zeichenfolge an übergeben ConvertFrom-Json.

Ausgaben

PSCustomObject

Hinweise

Das ConvertFrom-Json Cmdlet wird mithilfe der JavaScriptSerializer-Klasse implementiert.