ConvertFrom-Json
Konverterar en JSON-formaterad sträng till ett anpassat objekt.
Syntax
Default (Standard)
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Description
Cmdleten ConvertFrom-Json konverterar en JSON-formaterad sträng (JavaScript Object Notation) till en anpassad PSObject- eller Hashtable- objekt som har en egenskap för varje fält i JSON-strängen.
JSON används ofta av webbplatser för att tillhandahålla en textrepresentation av objekt. Cmdleten lägger till egenskaperna i det nya objektet när varje rad i JSON-strängen bearbetas.
JSON-standarden tillåter duplicerade nyckelnamn, vilket är förbjudet i PSObject- och Hashtable- typer. Om JSON-strängen till exempel innehåller dubblettnycklar används endast den sista nyckeln av den här cmdleten. Se andra exempel nedan.
Om du vill generera en JSON-sträng från ett objekt använder du cmdleten ConvertTo-Json.
Den här cmdleten introducerades i PowerShell 3.0.
Anmärkning
I Windows PowerShell 5.1 returnerar ConvertFrom-Json ett fel när en JSON-kommentar inträffar. I PowerShell 6 och senare stöder cmdleten JSON med kommentarer. JSON-kommentarer samlas inte in i objektens utdata av cmdleten. Mer information finns i avsnittet JSON-kommentarer i artikeln about_Comments.
Exempel
Exempel 1: Konvertera ett DateTime-objekt till ett JSON-objekt
Det här kommandot använder cmdletarna ConvertTo-Json och ConvertFrom-Json för att konvertera ett DateTime--objekt från cmdleten Get-Date till ett JSON-objekt och sedan till ett 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
I exemplet används cmdleten Select-Object för att hämta alla egenskaper för objektet DateTime. Den använder cmdleten ConvertTo-Json för att konvertera DateTime--objektet till en sträng formaterad som ett JSON-objekt och ConvertFrom-Json-cmdleten för att konvertera den JSON-formaterade strängen till ett PSCustomObject- objekt.
Exempel 2: Hämta JSON-strängar från en webbtjänst och konvertera dem till PowerShell-objekt
Det här kommandot använder cmdleten Invoke-WebRequest för att hämta JSON-strängar från en webbtjänst och använder sedan cmdleten ConvertFrom-Json för att konvertera JSON-innehåll till objekt som kan hanteras i 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
Du kan också använda cmdleten Invoke-RestMethod, som automatiskt konverterar JSON-innehåll till objekt.
Exempel 3: Konvertera en JSON-sträng till ett anpassat objekt
Det här exemplet visar hur du använder cmdleten ConvertFrom-Json för att konvertera en JSON-fil till ett anpassat PowerShell-objekt.
Get-Content -Raw JsonFile.json | ConvertFrom-Json
Kommandot använder Get-Content cmdlet för att hämta strängarna i en JSON-fil. Parametern Raw returnerar hela filen som ett enda JSON-objekt. Sedan använder den pipelineoperatorn för att skicka den avgränsade strängen till cmdleten ConvertFrom-Json, som konverterar den till ett anpassat objekt.
Parametrar
-InputObject
Anger JSON-strängarna som ska konverteras till JSON-objekt. Ange en variabel som innehåller strängen eller skriv ett kommando eller uttryck som hämtar strängen. Du kan också skicka en sträng till ConvertFrom-Json.
Parametern InputObject krävs, men dess värde kan vara en tom sträng. När indataobjektet är en tom sträng genererar ConvertFrom-Json inga utdata. Värdet InputObject kan inte vara $null.
Parameteregenskaper
| Typ: | String |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | 0 |
| Obligatorisk: | True |
| Värde från pipeline: | True |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
CommonParameters
Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.
Indata
String
Du kan skicka en JSON-sträng till ConvertFrom-Json.
Utdata
PSCustomObject
Kommentarer
Cmdleten ConvertFrom-Json implementeras med klassen JavaScriptSerializer.
PSObject- typ upprätthåller ordningen på egenskaperna enligt JSON-strängen. Nyckel/värde-par läggs till i Hashtable- i den ordning som visas i JSON-strängen, men Hashtable objekt behåller inte den ordningen.