Condividi tramite


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à del sistema di tipo esteso 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 formattata 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. Ciò impedisce la perdita di dati indesiderata 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 formattata 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 dal ConvertTo-Json cmdlet con e senza il parametro dell'opzione AsArray . È possibile visualizzare la seconda parte dell'output racchiusa tra parentesi matrici.

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
}

In questo esempio viene usato il ConvertTo-Json cmdlet per convertire un oggetto System.DateTime dal Get-Date cmdlet a una stringa formattata JSON. Il comando usa il Select-Object cmdlet per ottenere tutte (*) delle 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

In questo esempio viene illustrato 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 della matrice, anche se l'input è un singolo oggetto.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Compress

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Int32
Position:Named
Default value:2
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnumsAsStrings

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EscapeHandling

Controlla la modalità di escape di determinati caratteri nell'output JSON risultante. Per impostazione predefinita, vengono escape solo i caratteri di controllo (ad esempio newline).

I valori accettabili sono:

  • Impostazione predefinita: vengono escape solo i caratteri di controllo.
  • EscapeNonAscii: tutti i caratteri di controllo e non ASCII vengono eliminati.
  • EscapeHtml: i caratteri HTML (<, '>&, ") e i caratteri di controllo vengono eliminati.

Questo parametro è stato introdotto in PowerShell 6.2.

Type:Newtonsoft.Json.StringEscapeHandling
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters: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 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.

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

Input

Object

È possibile eseguire la pipe di qualsiasi oggetto a questo cmdlet.

Output

String

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.