Share via


ConvertFrom-Json

Converteert een tekenreeks met JSON-indeling naar een aangepast object.

Syntax

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

Description

Met de ConvertFrom-Json cmdlet wordt een tekenreeks met JSON-indeling (JavaScript Object Notation) geconverteerd naar een aangepast 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 zijn verboden 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 ConvertTo-Json cmdlet.

Deze cmdlet is geïntroduceerd in PowerShell 3.0.

Notitie

Vanaf PowerShell 6 ondersteunt de cmdlet JSON met opmerkingen. JSON-opmerkingen beginnen met twee slashes (//) tekens. JSON-opmerkingen worden niet vastgelegd in de objecten die door de cmdlet worden uitgevoerd. Vóór PowerShell 6 ConvertFrom-Json zou er een fout worden geretourneerd bij het aangetroffen van een JSON-opmerking.

Voorbeelden

Voorbeeld 1: Een DateTime-object converteren naar een JSON-object

Met deze opdracht worden de ConvertTo-Json en ConvertFrom-Json cmdlets gebruikt om een DateTime-object van de Get-Date cmdlet 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 Select-Object cmdlet gebruikt om alle eigenschappen van het DateTime-object op te halen. De cmdlet gebruikt de ConvertTo-Json cmdlet 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 en vervolgens wordt de ConvertFrom-Json cmdlet 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 maakt gebruik van de cmdlet Get-Content om de tekenreeksen op te halen in een JSON-bestand. De parameter Raw retourneert het hele bestand als één JSON-object. Vervolgens wordt de pijplijnoperator gebruikt om de tekenreeks met scheidingstekens naar de ConvertFrom-Json cmdlet te verzenden, waardoor deze wordt geconverteerd naar 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 doorsluisen naar ConvertFrom-Json.

De parameter InputObject is vereist, maar de waarde kan een lege tekenreeks zijn. Wanneer het invoerobject een lege tekenreeks is, ConvertFrom-Json wordt er geen uitvoer gegenereerd. De waarde InputObject kan niet zijn $null.

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

Invoerwaarden

String

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 type PSObject behoudt de volgorde van de eigenschappen zoals weergegeven in de JSON-tekenreeks. Hoewel de sleutel-waardeparen worden toegevoegd aan de Hash-tabel in de volgorde die wordt weergegeven in de JSON-tekenreeks, behouden Hashtable-objecten die volgorde niet.