ConvertFrom-Json

Konverterar en JSON-formaterad sträng till ett anpassat objekt.

Syntax

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

Description

Cmdleten ConvertFrom-Json konverterar en JSON-formaterad sträng (JavaScript Object Notation) till ett anpassat 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 dubbletter av nyckelnamn, vilket är förbjudet i typerna PSObject och Hashtable . 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.

Kommentar

Från och med PowerShell 6 stöder cmdleten JSON med kommentarer. JSON-kommentarer börjar med två snedstreck (//) tecken. JSON-kommentarer samlas inte in i objektens utdata av cmdleten. Före PowerShell 6 ConvertFrom-Json skulle ett fel returneras när en JSON-kommentar påträffades.

Exempel

Exempel 1: Konvertera ett DateTime-objekt till ett JSON-objekt

Det här kommandot använder ConvertTo-Json cmdletarna och ConvertFrom-Json för att konvertera ett DateTime-objekt från cmdleten Get-Date till ett JSON-objekt och sedan till en 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 DateTime-objektet . Den använder cmdleten ConvertTo-Json för att konvertera DateTime-objektet till en sträng formaterad som ett JSON-objekt och cmdleten ConvertFrom-Json 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 cmdleten Get-Content 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 ConvertFrom-Json genererar inga utdata. InputObject-värdet får inte vara $null.

Typ:String
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

Indata

String

Du kan skicka en JSON-sträng till ConvertFrom-Json.

Utdata

PSCustomObject

Kommentarer

Cmdleten ConvertFrom-Json implementeras med klassen JavaScriptSerializer.

PSObject-typen upprätthåller ordningen på egenskaperna enligt vad som visas i JSON-strängen. Även om nyckel/värde-paren läggs till i hashtabellen i den ordning som visas i JSON-strängen, behåller inte Hashtable-objekt den ordningen.