Condividi tramite


ConvertFrom-Json

Converte una stringa in formato JSON in un oggetto personalizzato.

Sintassi

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

Descrizione

Il ConvertFrom-Json cmdlet converte una stringa in formato JSON (JavaScript Object Notation) in un oggetto PSObject o Hashtable personalizzato con una proprietà per ogni campo nella stringa JSON. Il formato JSON è comunemente usato dai siti Web per fornire una rappresentazione testuale di oggetti. Il cmdlet aggiunge le proprietà al nuovo oggetto durante l'elaborazione di ogni riga della stringa JSON.

Lo standard JSON consente nomi di chiave duplicati, che sono vietati nei tipi PSObject e Hashtable . Ad esempio, se la stringa JSON contiene chiavi duplicate, viene usata solo l'ultima chiave da questo cmdlet. Vedere altri esempi di seguito.

Per generare una stringa JSON da qualsiasi oggetto, usare il ConvertTo-Json cmdlet .

Questo cmdlet è stato introdotto in PowerShell 3.0.

Nota

A partire da PowerShell 6, il cmdlet supporta JSON con commenti. I commenti JSON iniziano con due barre (//). I commenti JSON non vengono acquisiti nell'output degli oggetti dal cmdlet . Prima di PowerShell 6, ConvertFrom-Json viene restituito un errore quando si è verificato un commento JSON.

Esempio

Esempio 1: Convertire un oggetto DateTime in un oggetto JSON

Questo comando usa i ConvertTo-Json cmdlet e ConvertFrom-Json per convertire un oggetto DateTime dal Get-Date cmdlet a un oggetto JSON e quindi in un 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

Nell'esempio viene utilizzato il Select-Object cmdlet per ottenere tutte le proprietà dell'oggetto DateTime . Usa il ConvertTo-Json cmdlet per convertire l'oggetto DateTime in una stringa formattata come oggetto JSON e il ConvertFrom-Json cmdlet per convertire la stringa in formato JSON in un oggetto PSCustomObject .

Esempio 2: Ottenere stringhe JSON da un servizio Web e convertirle in oggetti Di PowerShell

Questo comando usa il Invoke-WebRequest cmdlet per ottenere stringhe JSON da un servizio Web e quindi usa il ConvertFrom-Json cmdlet per convertire il contenuto JSON in oggetti che possono essere gestiti in 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

È anche possibile usare il Invoke-RestMethod cmdlet , che converte automaticamente il contenuto JSON in oggetti .

Esempio 3: Convertire una stringa JSON in un oggetto personalizzato

Questo esempio illustra come usare il ConvertFrom-Json cmdlet per convertire un file JSON in un oggetto personalizzato di PowerShell.

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

Il comando usa il cmdlet Get-Content per ottenere le stringhe in un file JSON. Il parametro Raw restituisce l'intero file come singolo oggetto JSON. Usa quindi l'operatore pipeline per inviare la stringa delimitata al ConvertFrom-Json cmdlet , che la converte in un oggetto personalizzato.

Parametri

-InputObject

Specifica le stringhe JSON da convertire in oggetti JSON. Immettere una variabile che contiene la stringa o digitare un comando o un'espressione che ottiene la stringa. È anche possibile inviare tramite pipe una stringa a ConvertFrom-Json.

Il parametro InputObject è obbligatorio, ma il relativo valore può essere una stringa vuota. Quando l'oggetto di input è una stringa vuota, ConvertFrom-Json non genera alcun output. Il valore InputObject non può essere $null.

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

Input

String

È possibile inviare tramite pipe una stringa JSON a ConvertFrom-Json.

Output

PSCustomObject

Note

Il ConvertFrom-Json cmdlet viene implementato usando la classe JavaScriptSerializer.

Il tipo PSObject mantiene l'ordine delle proprietà come presentato nella stringa JSON. Mentre le coppie chiave-valore vengono aggiunte alla tabella Hash nell'ordine presentato nella stringa JSON, gli oggetti Hashtable non mantengono tale ordine.