Udostępnij za pośrednictwem


ConvertFrom-Json

Konwertuje ciąg w formacie JSON na obiekt niestandardowy.

Składnia

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

Opis

Polecenie cmdlet ConvertFrom-Json konwertuje ciąg sformatowany w formacie JavaScript Object Notation (JSON) na niestandardowy obiekt PSCustomObject, 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. Standard JSON nie zabrania użycia zabronionego za pomocą PSCustomObject. 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 polecenia cmdlet ConvertTo-Json.

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

Nuta

To polecenie cmdlet nie obsługuje formatu JSON z komentarzami.

Przykłady

Przykład 1. Konwertowanie obiektu DateTime na obiekt JSON

To polecenie używa poleceń cmdlet ConvertTo-Json i ConvertFrom-Json do konwertowania obiektu DateTime z polecenia cmdlet Get-Date do obiektu 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 polecenia cmdlet Select-Object, aby pobrać wszystkie właściwości obiektu DateTime. Używa on polecenia cmdlet ConvertTo-Json do konwertowania obiektu DateTime na ciąg sformatowany jako obiekt JSON i polecenie cmdlet ConvertFrom-Json w celu przekonwertowania ciągu 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 polecenia cmdlet Invoke-WebRequest do pobierania ciągów JSON z usługi internetowej, a następnie używa polecenia cmdlet ConvertFrom-Json 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ć polecenia cmdlet Invoke-RestMethod, które automatycznie konwertuje zawartość JSON na obiekty.

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

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

Get-Content JsonFile.JSON | ConvertFrom-Json

Polecenie używa Get-Content cmdlet, aby pobrać ciągi w pliku JSON. Następnie używa operatora potoku do wysyłania rozdzielanego ciągu do polecenia cmdlet ConvertFrom-Json, 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-Json.

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. Nie można $nullwartości InputObject .

Typ:String
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

String

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

Dane wyjściowe

PSCustomObject

Uwagi

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