ConvertTo-Json
Convertit un objet en une chaîne au format JSON.
Syntaxe
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
Description
L’applet ConvertTo-Json
de commande convertit tout objet .NET en chaîne au format JSON (JavaScript Object Notation). Les propriétés sont converties en noms de champs et les valeurs de champ en valeurs de propriété, tandis que les méthodes sont supprimées.
Remarque
À partir de PowerShell 7.2, les propriétés système de type étendu des objets DateTime et String ne sont plus sérialisées et seul l’objet simple est converti au format JSON
Vous pouvez ensuite utiliser l’applet ConvertFrom-Json
de commande pour convertir une chaîne au format JSON en objet JSON, qui est facilement géré dans PowerShell.
De nombreux sites web utilisent JSON au lieu de XML pour sérialiser les données en vue de la communication entre les serveurs et les applications basées sur le web.
À partir de PowerShell 7.1, ConvertTo-Json
émet un avertissement si la profondeur de l’objet d’entrée dépasse la profondeur spécifiée pour la commande. Cela empêche la perte de données indésirables lors de la conversion d’objets.
Cette applet de commande a été introduite dans Windows PowerShell 3.0.
Exemples
Exemple 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
}
Cette commande utilise l’applet ConvertTo-Json
de commande pour convertir un objet GregorianCalendar en chaîne au format JSON.
Exemple 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"
]
Cet exemple montre la sortie de l’applet de ConvertTo-Json
commande avec et sans le paramètre de commutateur AsArray . La deuxième partie de la sortie est encapsulée entre crochets de tableau.
Exemple 3
@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress
{"Domain":"Domain01","Account":"User01","Admin":"True"}
Cette commande montre l’effet de l’utilisation du paramètre Compress de ConvertTo-Json
. La compression affecte uniquement l'aspect de la chaîne, pas sa validité.
Exemple 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
}
Cet exemple utilise l’applet ConvertTo-Json
de commande pour convertir un objet System.DateTime de l’applet Get-Date
de commande en chaîne au format JSON. La commande utilise l’applet Select-Object
de commande pour obtenir toutes les*
propriétés de l’objet DateTime . La sortie affiche la chaîne JSON retournée ConvertTo-Json
.
Exemple 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
Cet exemple montre comment utiliser les ConvertTo-Json
applets de commande et ConvertFrom-Json
les applets de commande pour convertir un objet en chaîne JSON et un objet JSON.
Paramètres
-AsArray
Génère l’objet entre crochets de tableau, même si l’entrée est un seul objet.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Compress
Omet les espaces blancs et la mise en forme en retrait dans la chaîne de sortie.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Depth
Spécifie le nombre de niveaux d'objets contenus inclus dans la représentation JSON. La valeur peut être n’importe quel nombre de 0
vers 100
. La valeur par défaut est 2
. ConvertTo-Json
émet un avertissement si le nombre de niveaux d’un objet d’entrée dépasse ce nombre.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | 2 |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-EnumsAsStrings
Fournit une autre option de sérialisation qui convertit toutes les énumérations en leur représentation sous forme de chaîne.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-EscapeHandling
Contrôle la façon dont certains caractères sont échappés dans la sortie JSON résultante. Par défaut, seuls les caractères de contrôle (comme newline) sont placés dans une séquence d’échappement.
Les valeurs acceptables sont les suivantes :
- Valeur par défaut : seuls les caractères de contrôle sont placés dans l’échappement.
- EscapeNonAscii : tous les caractères non ASCII et de contrôle sont placés dans une séquence d’échappement.
- EscapeHtml - Html (
<
,>
,&
,'
,"
) et les caractères de contrôle sont placés dans l’échappement.
Ce paramètre a été introduit dans PowerShell 6.2.
Type: | Newtonsoft.Json.StringEscapeHandling |
Position: | Named |
Valeur par défaut: | Default |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InputObject
Spécifie les objets à convertir au format JSON. Entrez une variable contenant les objets, ou tapez une commande ou une expression qui obtient ces objets. Vous pouvez également diriger un objet vers ConvertTo-Json
.
Le paramètre InputObject est obligatoire, mais sa valeur peut être null ($null
) ou une chaîne vide.
Lorsque l’objet d’entrée est $null
, ConvertTo-Json
retourne la représentation JSON de null
. Lorsque l’objet d’entrée est une chaîne vide, ConvertTo-Json
retourne la représentation JSON d’une chaîne vide.
Type: | Object |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez diriger n’importe quel objet vers cette applet de commande.
Sorties
Cette applet de commande retourne une chaîne représentant l’objet d’entrée converti en chaîne JSON.
Notes
L’applet ConvertTo-Json
de commande est implémentée à l’aide de Newtonsoft Json.NET.