ConvertFrom-Json
Převede řetězec ve formátu JSON na vlastní objekt.
Syntaxe
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Description
Rutina ConvertFrom-Json
převede řetězec ve formátu JSON (JavaScript Object Notation) na vlastní objekt PSObject nebo Hashtable , který má vlastnost pro každé pole v řetězci JSON.
JSON se běžně používá na webových webech k poskytnutí textové reprezentace objektů. Rutina přidá vlastnosti do nového objektu, protože zpracovává každý řádek řetězce JSON.
Standard JSON umožňuje duplicitní názvy klíčů, které jsou zakázány v typech PSObject a Hashtable . Pokud například řetězec JSON obsahuje duplicitní klíče, použije tato rutina pouze poslední klíč. Podívejte se na další příklady níže.
K vygenerování řetězce JSON z libovolného objektu použijte rutinu ConvertTo-Json
.
Tato rutina byla představena v PowerShellu 3.0.
Poznámka:
Počínaje PowerShellem 6 podporuje rutina JSON s komentáři. Komentáře JSON začínají dvěma lomítky (//
) znaky. Komentáře JSON nejsou zachyceny ve výstupu objektů rutinou. Před PowerShellem 6 ConvertFrom-Json
by se při výskytu komentáře JSON vrátila chyba.
Příklady
Příklad 1: Převod objektu DateTime na objekt JSON
Tento příkaz používá ConvertTo-Json
a ConvertFrom-Json
rutiny k převodu objektu DateTime z Get-Date
rutiny na objekt JSON pak na 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
Příklad používá rutinu Select-Object
k získání všech vlastností objektu DateTime . Pomocí rutiny ConvertTo-Json
převede objekt DateTime na řetězec formátovaný jako objekt JSON a rutina ConvertFrom-Json
převede řetězec ve formátu JSON na objekt PSCustomObject .
Příklad 2: Získání řetězců JSON z webové služby a jejich převod na objekty PowerShellu
Tento příkaz pomocí rutiny Invoke-WebRequest
získá řetězce JSON z webové služby a pak pomocí ConvertFrom-Json
této rutiny převede obsah JSON na objekty, které je možné spravovat v PowerShellu.
# 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
Můžete také použít rutinu Invoke-RestMethod
, která automaticky převede obsah JSON na objekty.
Příklad 3: Převod řetězce JSON na vlastní objekt
Tento příklad ukazuje, jak pomocí rutiny ConvertFrom-Json
převést soubor JSON na vlastní objekt PowerShellu.
Get-Content -Raw JsonFile.JSON | ConvertFrom-Json
Příkaz používá rutinu Get-Content k získání řetězců v souboru JSON. Nezpracovaný parametr vrátí celý soubor jako jeden objekt JSON. Potom pomocí operátoru kanálu odešle řetězec s oddělovači do ConvertFrom-Json
rutiny, která ho převede na vlastní objekt.
Parametry
-InputObject
Určuje řetězce JSON, které se mají převést na objekty JSON. Zadejte proměnnou, která obsahuje řetězec, nebo zadejte příkaz nebo výraz, který řetězec získá. Řetězec můžete také převést na ConvertFrom-Json
.
Parametr InputObject je povinný, ale jeho hodnota může být prázdný řetězec. Pokud je vstupním objektem prázdný řetězec, ConvertFrom-Json
nevygeneruje žádný výstup. Hodnota InputObject nemůže být $null
.
Typ: | String |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
Vstupy
Řetězec JSON můžete převést na ConvertFrom-Json
.
Výstupy
PSCustomObject
Poznámky
Rutina ConvertFrom-Json
se implementuje pomocí třídy JavaScriptSerializer.
Typ PSObject udržuje pořadí vlastností, jak je znázorněno v řetězci JSON. Zatímco páry klíč-hodnota se přidají do hashtable v pořadí uvedeném v řetězci JSON, objekty Hashtable toto pořadí neudržují.