ConvertTo-Json
Converte un oggetto in una stringa in formato JSON.
Sintassi
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
Descrizione
Il ConvertTo-Json
cmdlet converte qualsiasi oggetto .NET in una stringa in formato JSON (JavaScript Object Notation). Le proprietà vengono convertite in nomi di campo, i valori di campo vengono convertiti in valori di proprietà e i metodi vengono rimossi.
Nota
A partire da PowerShell 7.2, le proprietà extended type system degli oggetti DateTime e String non vengono più serializzate e solo l'oggetto semplice viene convertito in formato JSON
È quindi possibile usare il ConvertFrom-Json
cmdlet per convertire una stringa in formato JSON in un oggetto JSON, che è facilmente gestito in PowerShell.
Molti siti Web usano JSON anziché XML per serializzare i dati per la comunicazione tra server e applicazioni basate sul Web.
A partire da PowerShell 7.1, ConvertTo-Json
genera un avviso se la profondità dell'oggetto di input supera la profondità specificata per il comando. In questo modo si evita la perdita di dati indesiderati durante la conversione di oggetti.
Questo cmdlet è stato introdotto in Windows PowerShell 3.0.
Esempio
Esempio 1
(Get-UICulture).Calendar | ConvertTo-Json
{
"MinSupportedDateTime": "0001-01-01T00:00:00",
"MaxSupportedDateTime": "9999-12-31T23:59:59.9999999",
"AlgorithmType": 1,
"CalendarType": 1,
"Eras": [
1
],
"TwoDigitYearMax": 2029,
"IsReadOnly": true
}
Questo comando usa il ConvertTo-Json
cmdlet per convertire un oggetto GregorianCalendar in una stringa in formato JSON.
Esempio 2
Get-Date | ConvertTo-Json; Get-Date | ConvertTo-Json -AsArray
"2021-08-05T16:13:05.6394416-07:00"
[
"2021-08-05T16:13:05.6421709-07:00"
]
Questo esempio mostra l'output del ConvertTo-Json
cmdlet con e senza il parametro switch AsArray . È possibile vedere che la seconda parte dell'output è racchiusa tra parentesi di matrice.
Esempio 3
@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress
{"Domain":"Domain01","Account":"User01","Admin":"True"}
Questo comando mostra l'effetto dell'uso del parametro Compress di ConvertTo-Json
. La compressione influisce solo sull'aspetto della stringa, non sulla validità.
Esempio 4
Get-Date | Select-Object -Property * | ConvertTo-Json
{
"DisplayHint": 2,
"DateTime": "October 12, 2018 10:55:32 PM",
"Date": "2018-10-12T00:00:00-05:00",
"Day": 12,
"DayOfWeek": 5,
"DayOfYear": 285,
"Hour": 22,
"Kind": 2,
"Millisecond": 639,
"Minute": 55,
"Month": 10,
"Second": 32,
"Ticks": 636749817326397744,
"TimeOfDay": {
"Ticks": 825326397744,
"Days": 0,
"Hours": 22,
"Milliseconds": 639,
"Minutes": 55,
"Seconds": 32,
"TotalDays": 0.95523888627777775,
"TotalHours": 22.925733270666665,
"TotalMilliseconds": 82532639.774400011,
"TotalMinutes": 1375.54399624,
"TotalSeconds": 82532.6397744
},
"Year": 2018
}
Questo esempio usa il ConvertTo-Json
cmdlet per convertire un oggetto System.DateTime dal Get-Date
cmdlet a una stringa in formato JSON. Il comando usa il Select-Object
cmdlet per ottenere tutte le*
proprietà () dell'oggetto DateTime . L'output mostra la stringa ConvertTo-Json
JSON restituita.
Esempio 5
Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : October 12, 2018 10:55:52 PM
Date : 2018-10-12 12:00:00 AM
Day : 12
DayOfWeek : 5
DayOfYear : 285
Hour : 22
Kind : 2
Millisecond : 768
Minute : 55
Month : 10
Second : 52
Ticks : 636749817527683372
TimeOfDay : @{Ticks=825527683372; Days=0; Hours=22; Milliseconds=768; Minutes=55; Seconds=52;
TotalDays=0.95547185575463; TotalHours=22.9313245381111; TotalMilliseconds=82552768.3372;
TotalMinutes=1375.87947228667; TotalSeconds=82552.7683372}
Year : 2018
Questo esempio illustra come usare i ConvertTo-Json
cmdlet e ConvertFrom-Json
per convertire un oggetto in una stringa JSON e in un oggetto JSON.
Parametri
-AsArray
Restituisce l'oggetto tra parentesi quadre, anche se l'input è un singolo oggetto.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Compress
Omette gli spazi vuoti e la formattazione rientrata nella stringa di output.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Depth
Specifica il numero di livelli di oggetti contenuti inclusi nella rappresentazione JSON. Il valore può essere qualsiasi numero da 0
a 100
. Il valore predefinito è 2
. ConvertTo-Json
genera un avviso se il numero di livelli in un oggetto di input supera questo numero.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | 2 |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-EnumsAsStrings
Fornisce un'opzione di serializzazione alternativa che converte tutte le enumerazioni nella relativa rappresentazione di stringa.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-EscapeHandling
Controlla la modalità di escape di determinati caratteri nell'output JSON risultante. Per impostazione predefinita, vengono preceduti da un carattere di escape solo i caratteri di controllo (ad esempio la nuova riga).
I valori accettabili sono:
- Impostazione predefinita: solo i caratteri di controllo vengono preceduti da un carattere di escape.
- EscapeNonAscii: tutti i caratteri di controllo e non ASCII vengono preceduti da un carattere di escape.
- EscapeHtml: i caratteri di escape (
<
,>
,&
'
, ,"
) e i caratteri di controllo vengono preceduti da caratteri di escape.
Questo parametro è stato introdotto in PowerShell 6.2.
Tipo: | Newtonsoft.Json.StringEscapeHandling |
Posizione: | Named |
Valore predefinito: | Default |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-InputObject
Specifica gli oggetti da convertire in formato JSON. Immettere una variabile che contiene gli oggetti oppure digitare un comando o un'espressione che ottiene gli oggetti. È anche possibile inviare tramite pipe un oggetto a ConvertTo-Json
.
Il parametro InputObject è obbligatorio, ma il relativo valore può essere null ($null
) o una stringa vuota.
Quando l'oggetto di input è $null
, ConvertTo-Json
restituisce la rappresentazione JSON di null
. Quando l'oggetto di input è una stringa vuota, ConvertTo-Json
restituisce la rappresentazione JSON di una stringa vuota.
Tipo: | Object |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe qualsiasi oggetto a questo cmdlet.
Output
Questo cmdlet restituisce una stringa che rappresenta l'oggetto di input convertito in una stringa JSON.
Note
Il ConvertTo-Json
cmdlet viene implementato usando Newtonsoft Json.NET.