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-Json
cią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
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.
Linki powiązane
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla