ConvertFrom-Json
Converte una stringa in formato JSON in un oggetto personalizzato.
Sintassi
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Descrizione
Il cmdlet ConvertFrom-Json
converte una stringa formattata in JavaScript Object Notation (JSON) in un PSObject personalizzato o un oggetto di tipo Hashtable che ha una proprietà per ogni campo nella stringa JSON.
JSON viene comunemente usato dai siti Web per fornire una rappresentazione testuale degli 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 non sono consentiti nei tipi di 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 cmdlet ConvertTo-Json
.
Questo cmdlet è stato introdotto in PowerShell 3.0.
Nota
In Windows PowerShell 5.1 ConvertFrom-Json
restituisce un errore quando rileva un commento JSON. In PowerShell 6 e versioni successive il cmdlet supporta JSON con commenti. I commenti JSON non vengono acquisiti dal cmdlet nell'output degli oggetti. Per ulteriori informazioni, vedere la sezione commenti JSON dell'articolo about_Comments.
Esempio
Esempio 1: Convertire un oggetto DateTime in un oggetto JSON
Questo comando usa i cmdlet ConvertTo-Json
e ConvertFrom-Json
per convertire un oggetto DateTime dal cmdlet Get-Date
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 cmdlet Select-Object
per ottenere tutte le proprietà dell'oggetto DateTime. Usa il cmdlet ConvertTo-Json
per convertire l'oggetto DateTime in una stringa formattata come oggetto JSON e il cmdlet ConvertFrom-Json
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 cmdlet Invoke-WebRequest
per ottenere stringhe JSON da un servizio Web e quindi usa il cmdlet ConvertFrom-Json
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 cmdlet Invoke-RestMethod
, che converte automaticamente il contenuto JSON in oggetti .
Esempio 3: Convertire una stringa JSON in un oggetto personalizzato
Questo esempio illustra come usare il cmdlet ConvertFrom-Json
per convertire un file JSON in un oggetto personalizzato di PowerShell.
Get-Content -Raw JsonFile.json | ConvertFrom-Json
Il comando usa Get-Content cmdlet 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 cmdlet ConvertFrom-Json
, che lo converte in un oggetto personalizzato.
Parametri
-InputObject
Specifica le stringhe JSON da convertire in oggetti JSON. Immettere una variabile contenente la stringa oppure 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
.
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe una stringa JSON a ConvertFrom-Json
.
Output
PSCustomObject
Note
Il cmdlet ConvertFrom-Json
viene implementato usando la classe JavaScriptSerializer .
Il tipo di PSObject mantiene l'ordine delle proprietà come presentato nella stringa JSON. Mentre le coppie chiave-valore vengono aggiunte all'Hashtable nell'ordine presentato nella stringa JSON, gli oggetti Hashtable non mantengono tale ordine.