ConvertFrom-Json

Konwertuje ciąg w formacie JSON na obiekt niestandardowy.

Składnia

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

Opis

Polecenie ConvertFrom-Json cmdlet konwertuje ciąg sformatowany w formacie JavaScript Object Notation (JSON) na niestandardowy obiekt PSObject lub Hashtable , który ma właściwość dla każdego pola w ciągu JSON. Kod JSON jest często używany przez witryny sieci Web w celu zapewnienia tekstowej reprezentacji obiektów. Polecenie cmdlet dodaje właściwości do nowego obiektu podczas przetwarzania każdego wiersza ciągu JSON.

Standard JSON zezwala na zduplikowane nazwy kluczy, które są zabronione w typach PSObject i Hashtable . Jeśli na przykład ciąg JSON zawiera zduplikowane klucze, tylko ostatni klucz jest używany przez to polecenie cmdlet. Zobacz inne przykłady poniżej.

Aby wygenerować ciąg JSON z dowolnego obiektu, użyj ConvertTo-Json polecenia cmdlet .

To polecenie cmdlet zostało wprowadzone w programie PowerShell 3.0.

Uwaga

Począwszy od programu PowerShell 6, polecenie cmdlet obsługuje kod JSON z komentarzami. Komentarze JSON zaczynają się od dwóch ukośników (//). Komentarze JSON nie są przechwytywane w danych wyjściowych obiektów przez polecenie cmdlet . Przed programem PowerShell 6 ConvertFrom-Json zostanie zwrócony błąd, gdy napotkał komentarz JSON.

Przykłady

Przykład 1. Konwertowanie obiektu DateTime na obiekt JSON

To polecenie używa ConvertTo-Json poleceń cmdlet i ConvertFrom-Json do konwertowania obiektu DateTime z Get-Date polecenia cmdlet na obiekt JSON, a następnie do obiektu 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

W przykładzie użyto Select-Object polecenia cmdlet , aby pobrać wszystkie właściwości obiektu DateTime . Używa ConvertTo-Json polecenia cmdlet , aby przekonwertować obiekt DateTime na ciąg sformatowany jako obiekt JSON i ConvertFrom-Json polecenie cmdlet, aby przekonwertować ciąg sformatowany w formacie JSON na obiekt PSCustomObject .

Przykład 2. Pobieranie ciągów JSON z usługi internetowej i konwertowanie ich na obiekty programu PowerShell

To polecenie używa Invoke-WebRequest polecenia cmdlet do pobierania ciągów JSON z usługi internetowej, a następnie używa ConvertFrom-Json polecenia cmdlet do konwertowania zawartości JSON na obiekty, którymi można zarządzać w programie 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

Możesz również użyć Invoke-RestMethod polecenia cmdlet , które automatycznie konwertuje zawartość JSON na obiekty.

Przykład 3. Konwertowanie ciągu JSON na obiekt niestandardowy

W tym przykładzie ConvertFrom-Json pokazano, jak za pomocą polecenia cmdlet przekonwertować plik JSON na obiekt niestandardowy programu PowerShell.

Get-Content -Raw JsonFile.JSON | ConvertFrom-Json

Polecenie używa polecenia cmdlet Get-Content, aby pobrać ciągi w pliku JSON. Parametr Raw zwraca cały plik jako pojedynczy obiekt JSON. Następnie używa operatora potoku do wysyłania rozdzielanego ciągu do ConvertFrom-Json polecenia cmdlet, które konwertuje go na obiekt niestandardowy.

Parametry

-InputObject

Określa ciągi JSON do konwersji na obiekty JSON. Wprowadź zmienną zawierającą ciąg lub wpisz polecenie lub wyrażenie, które pobiera ciąg. Możesz również przekazać ciąg do ConvertFrom-Jsonciągu .

Parametr InputObject jest wymagany, ale jego wartość może być pustym ciągiem. Gdy obiekt wejściowy jest pustym ciągiem, ConvertFrom-Json nie generuje żadnych danych wyjściowych. Wartość InputObject nie może mieć wartości $null.

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

Dane wejściowe

String

Możesz przekazać ciąg JSON do ConvertFrom-Json.

Dane wyjściowe

PSCustomObject

Uwagi

Polecenie ConvertFrom-Json cmdlet jest implementowane przy użyciu klasy JavaScriptSerializer.

Typ obiektu PSObject zachowuje kolejność właściwości, jak pokazano w ciągu JSON. Podczas gdy pary klucz-wartość są dodawane do tabeli skrótów w kolejności przedstawionej w ciągu JSON, obiekty tabeli skrótów nie zachowują tej kolejności.