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

Object

Vous pouvez diriger n’importe quel objet vers cette applet de commande.

Sorties

String

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.