ConvertFrom-Json
Konvertiert eine JSON-formatierte Zeichenfolge in ein benutzerdefiniertes Objekt.
Syntax
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Beschreibung
Das cmdlet ConvertFrom-Json
konvertiert eine json-formatierte Zeichenfolge (JavaScript Object Notation) in eine benutzerdefinierte PSObject- oder Hashtable--Objekt, das über eine Eigenschaft für jedes Feld in der JSON-Zeichenfolge verfügt.
JSON wird häufig von Websites verwendet, um eine textbezogene Darstellung von Objekten bereitzustellen. Das Cmdlet fügt dem neuen Objekt die Eigenschaften hinzu, während jede Zeile der JSON-Zeichenfolge verarbeitet wird.
Der JSON-Standard ermöglicht doppelte Schlüsselnamen, die in PSObject- und Hashtable- Typen verboten sind. Wenn beispielsweise die JSON-Zeichenfolge doppelte Schlüssel enthält, wird nur der letzte Schlüssel von diesem Cmdlet verwendet. Weitere Beispiele finden Sie unten.
Verwenden Sie das Cmdlet ConvertTo-Json
, um eine JSON-Zeichenfolge aus einem beliebigen Objekt zu generieren.
Dieses Cmdlet wurde in PowerShell 3.0 eingeführt.
Anmerkung
In Windows PowerShell 5.1 gibt ConvertFrom-Json
einen Fehler zurück, wenn ein JSON-Kommentar auftritt. In PowerShell 6 und höher unterstützt das Cmdlet JSON mit Kommentaren. JSON-Kommentare werden nicht in den vom Cmdlet ausgegebenen Objekten erfasst. Weitere Informationen finden Sie im Abschnitt JSON-Kommentare des Artikels about_Comments.
Beispiele
Beispiel 1: Konvertieren eines DateTime-Objekts in ein JSON-Objekt
Dieser Befehl verwendet die Cmdlets ConvertTo-Json
und ConvertFrom-Json
, um ein DateTime--Objekt aus dem Cmdlet Get-Date
in ein JSON-Objekt zu konvertieren und dann in ein 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
Im Beispiel wird das cmdlet Select-Object
verwendet, um alle Eigenschaften des DateTime--Objekts abzurufen. Es verwendet das Cmdlet ConvertTo-Json
, um das DateTime--Objekt in eine Zeichenfolge zu konvertieren, die als JSON-Objekt formatiert ist, und das cmdlet ConvertFrom-Json
, 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 Cmdlet Invoke-WebRequest
zum Abrufen von JSON-Zeichenfolgen aus einem Webdienst und verwendet dann das Cmdlet ConvertFrom-Json
zum Konvertieren von JSON-Inhalten in Objekte, 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 Cmdlet Invoke-RestMethod
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 das cmdlet ConvertFrom-Json
verwenden, um eine JSON-Datei in ein benutzerdefiniertes PowerShell-Objekt zu konvertieren.
Get-Content -Raw JsonFile.JSON | ConvertFrom-Json
Der Befehl verwendet Get-Content Cmdlet, um die Zeichenfolgen in einer JSON-Datei abzurufen. Der parameter Raw gibt die gesamte Datei als einzelnes JSON-Objekt zurück. Anschließend wird der Pipelineoperator verwendet, um die durch Trennzeichen getrennte Zeichenfolge an das Cmdlet ConvertFrom-Json
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 eine Zeichenfolge auch an ConvertFrom-Json
weiterleiten.
Der InputObject Parameter ist erforderlich, der Wert kann jedoch eine leere Zeichenfolge sein. Wenn das Eingabeobjekt eine leere Zeichenfolge ist, generiert ConvertFrom-Json
keine Ausgabe. Der Wert InputObject kann nicht $null
werden.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können eine JSON-Zeichenfolge an ConvertFrom-Json
übergeben.
Ausgaben
PSCustomObject
Hinweise
Das cmdlet ConvertFrom-Json
wird mithilfe der JavaScriptSerializer-Klasseimplementiert.
Der PSObject- Typ behält die Reihenfolge der Eigenschaften bei, wie in der JSON-Zeichenfolge dargestellt. Während die Schlüssel-Wert-Paare der Hashtable- in der Reihenfolge hinzugefügt werden, die in der JSON-Zeichenfolge angezeigt wird, behalten Hashtable- Objekte diese Reihenfolge nicht bei.