Condividi tramite


ConvertTo-Json

Converte un oggetto in una stringa in formato JSON.

Sintassi

Default (impostazione predefinita).

ConvertTo-Json
    [-InputObject] <Object>
    [-Depth <Int32>]
    [-Compress]
    [-EnumsAsStrings]
    [-AsArray]
    [-EscapeHandling <StringEscapeHandling>]
    [<CommonParameters>]

Descrizione

Il cmdlet ConvertTo-Json converte qualsiasi oggetto .NET in una stringa in formato JSON (JavaScript Object Notation). Le proprietà vengono convertite in nomi di campo, i valori dei campi vengono convertiti in valori di proprietà e i metodi vengono rimossi.

Annotazioni

A partire da PowerShell 7.2, le proprietà del sistema di tipi estesi di DateTime e oggetti String non vengono più serializzati e solo l'oggetto semplice viene convertito in formato JSON

È quindi possibile usare il cmdlet ConvertFrom-Json 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 app 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.

A partire da PowerShell 7.5-preview.3, ConvertTo-Json può serializzare valori BigInteger come numeri JSON non elaborati.

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 cmdlet ConvertTo-Json 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 cmdlet di ConvertTo-Json 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 cmdlet ConvertTo-Json per convertire un oggetto System.DateTime dal cmdlet Get-Date a una stringa in formato JSON. Il comando usa il cmdlet Select-Object per ottenere tutte le proprietà (*) dell'oggetto DateTime. L'output mostra la stringa JSON che ConvertTo-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 cmdlet ConvertTo-Json 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.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Compress

Omette gli spazi vuoti e la formattazione rientrata nella stringa di output.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti: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.

Proprietà dei parametri

Tipo:Int32
Valore predefinito:2
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-EnumsAsStrings

Fornisce un'opzione di serializzazione alternativa che converte tutte le enumerazioni nella relativa rappresentazione di stringa.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti: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 - HTML (<, >, &, ', ") e i caratteri di controllo vengono preceduti da un carattere di escape.

Questo parametro è stato introdotto in PowerShell 6.2.

Proprietà dei parametri

Tipo:Newtonsoft.Json.StringEscapeHandling
Valore predefinito:Default
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-InputObject

Specifica gli oggetti da convertire in formato JSON. Immettere una variabile contenente 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.

Proprietà dei parametri

Tipo:Object
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:0
Obbligatorio:True
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

Object

È possibile passare qualsiasi oggetto come input a questo cmdlet.

Output

String

Questo cmdlet restituisce una stringa che rappresenta l'oggetto di input convertito in una stringa JSON.

Note

Il cmdlet ConvertTo-Json viene implementato usando Newtonsoft Json.NET.