ConvertFrom-Json
Converteert een tekenreeks met JSON-indeling naar een aangepast object.
Syntaxis
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Description
Met de cmdlet ConvertFrom-Json
wordt een tekenreeks met JSON-indeling (JavaScript Object Notation) geconverteerd naar een aangepaste PSObject- of Hashtable--object met een eigenschap voor elk veld in de JSON-tekenreeks.
JSON wordt vaak gebruikt door websites om een tekstuele weergave van objecten te bieden. De cmdlet voegt de eigenschappen toe aan het nieuwe object terwijl deze elke regel van de JSON-tekenreeks verwerkt.
De JSON-standaard staat dubbele sleutelnamen toe, die niet zijn toegestaan in PSObject- en Hashtable- typen. Als de JSON-tekenreeks bijvoorbeeld dubbele sleutels bevat, wordt alleen de laatste sleutel gebruikt door deze cmdlet. Zie andere voorbeelden hieronder.
Als u een JSON-tekenreeks wilt genereren op basis van een object, gebruikt u de cmdlet ConvertTo-Json
.
Deze cmdlet is geïntroduceerd in PowerShell 3.0.
Notitie
In Windows PowerShell 5.1 retourneert ConvertFrom-Json
een fout wanneer er een JSON-opmerking optreedt. In PowerShell 6 en hoger ondersteunt de cmdlet JSON met opmerkingen. JSON-opmerkingen worden niet vastgelegd in de objecten die door de cmdlet worden uitgevoerd. Zie de JSON-opmerkingen sectie van het about_Comments artikel voor meer informatie.
Voorbeelden
Voorbeeld 1: Een DateTime-object converteren naar een JSON-object
Met deze opdracht worden de cmdlets ConvertTo-Json
en ConvertFrom-Json
gebruikt om een DateTime--object van de cmdlet Get-Date
te converteren naar een JSON-object en vervolgens naar een 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
In het voorbeeld wordt de cmdlet Select-Object
gebruikt om alle eigenschappen van het DateTime--object op te halen. De cmdlet ConvertTo-Json
wordt gebruikt om het DateTime--object te converteren naar een tekenreeks die is opgemaakt als een JSON-object en de ConvertFrom-Json
-cmdlet om de tekenreeks met JSON-indeling te converteren naar een PSCustomObject-object.
Voorbeeld 2: JSON-tekenreeksen ophalen uit een webservice en deze converteren naar PowerShell-objecten
Met deze opdracht wordt de Invoke-WebRequest
-cmdlet gebruikt om JSON-tekenreeksen op te halen uit een webservice. Vervolgens wordt de cmdlet ConvertFrom-Json
gebruikt om JSON-inhoud te converteren naar objecten die kunnen worden beheerd in 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
U kunt ook de Invoke-RestMethod
-cmdlet gebruiken, waarmee JSON-inhoud automatisch wordt geconverteerd naar objecten.
Voorbeeld 3: Een JSON-tekenreeks converteren naar een aangepast object
In dit voorbeeld ziet u hoe u de ConvertFrom-Json
-cmdlet gebruikt om een JSON-bestand te converteren naar een aangepast PowerShell-object.
Get-Content -Raw JsonFile.JSON | ConvertFrom-Json
De opdracht gebruikt Get-Content cmdlet om de tekenreeksen op te halen in een JSON-bestand. De parameter Raw retourneert het hele bestand als één JSON-object. Vervolgens gebruikt men de pijplijnoperator om de door scheidingstekens gescheiden tekenreeks naar de ConvertFrom-Json
-cmdlet te sturen, die deze omzet in een aangepast object.
Parameters
-InputObject
Hiermee geeft u de JSON-tekenreeksen op die moeten worden geconverteerd naar JSON-objecten. Voer een variabele in die de tekenreeks bevat of typ een opdracht of expressie die de tekenreeks ophaalt. U kunt ook een tekenreeks doorspezen naar ConvertFrom-Json
.
De parameter InputObject is vereist, maar de waarde kan een lege tekenreeks zijn. Wanneer het invoerobject een lege tekenreeks is, genereert ConvertFrom-Json
geen uitvoer. De InputObject waarde kan niet worden $null
.
Type: | String |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt een JSON-tekenreeks doorsluisen naar ConvertFrom-Json
.
Uitvoerwaarden
PSCustomObject
Notities
De ConvertFrom-Json
cmdlet wordt geïmplementeerd met behulp van de JavaScriptSerializer-klasse.
Het PSObject- type behoudt de volgorde van de eigenschappen zoals weergegeven in de JSON-tekenreeks. Hoewel de sleutel-waardeparen worden toegevoegd aan de Hashtable- in de volgorde die wordt weergegeven in de JSON-tekenreeks, blijven Hashtable--objecten die volgorde niet behouden.