ConvertFrom-Json
Convertit une chaîne au format JSON en objet personnalisé.
Syntaxe
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Description
L’applet ConvertFrom-Json
de commande convertit une chaîne au format JSON (JavaScript Object Notation) en objet PSObject ou Hashtable personnalisé qui a une propriété pour chaque champ de la chaîne JSON.
JSON est couramment utilisé par les sites web pour fournir une représentation textuelle des objets. L’applet de commande ajoute les propriétés au nouvel objet, car elle traite chaque ligne de la chaîne JSON.
La norme JSON autorise les noms de clés en double, qui sont interdits dans les types PSObject et Hashtable . Par exemple, si la chaîne JSON contient des clés en double, seule la dernière clé est utilisée par cette applet de commande. Consultez d’autres exemples ci-dessous.
Pour générer une chaîne JSON à partir d’un objet, utilisez l’applet ConvertTo-Json
de commande.
Cette applet de commande a été introduite dans PowerShell 3.0.
Remarque
À compter de PowerShell 6, l’applet de commande prend en charge JSON avec des commentaires. Les commentaires JSON commencent par deux barres obliques (//
) caractères. Les commentaires JSON ne sont pas capturés dans les objets générés par l’applet de commande. Avant PowerShell 6, ConvertFrom-Json
retourne une erreur lorsqu’il a rencontré un commentaire JSON.
Exemples
Exemple 1 : Convertir un objet DateTime en objet JSON
Cette commande utilise les applets de commande et les ConvertTo-Json
applets de commande pour convertir un objet DateTime de l’applet Get-Date
de commande en objet JSON, puis en PSCustomObject.ConvertFrom-Json
Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : Friday, January 13, 2012 8:06:31 PM
Date : 1/13/2012 8:00:00 AM
Day : 13
DayOfWeek : 5
DayOfYear : 13
Hour : 20
Kind : 2
Millisecond : 400
Minute : 6
Month : 1
Second : 31
Ticks : 634620819914009002
TimeOfDay : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year : 2012
L’exemple utilise l’applet Select-Object
de commande pour obtenir toutes les propriétés de l’objet DateTime . Il utilise l’applet ConvertTo-Json
de commande pour convertir l’objet DateTime en chaîne mise en forme en tant qu’objet JSON et l’applet ConvertFrom-Json
de commande pour convertir la chaîne au format JSON en objet PSCustomObject .
Exemple 2 : Obtenir des chaînes JSON à partir d’un service web et les convertir en objets PowerShell
Cette commande utilise l’applet Invoke-WebRequest
de commande pour obtenir des chaînes JSON à partir d’un service web, puis elle utilise l’applet de commande pour convertir du ConvertFrom-Json
contenu JSON en objets pouvant être gérés dans PowerShell.
# Ensures that Invoke-WebRequest uses TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$j = Invoke-WebRequest 'https://api.github.com/repos/PowerShell/PowerShell/issues' | ConvertFrom-Json
Vous pouvez également utiliser l’applet Invoke-RestMethod
de commande, qui convertit automatiquement le contenu JSON en objets.
Exemple 3 : Convertir une chaîne JSON en objet personnalisé
Cet exemple montre comment utiliser l’applet ConvertFrom-Json
de commande pour convertir un fichier JSON en objet personnalisé PowerShell.
Get-Content -Raw JsonFile.JSON | ConvertFrom-Json
La commande utilise l’applet de commande Get-Content pour obtenir les chaînes dans un fichier JSON. Le paramètre Raw retourne le fichier entier sous la forme d’un seul objet JSON. Ensuite, il utilise l’opérateur de pipeline pour envoyer la chaîne délimitée à l’applet ConvertFrom-Json
de commande, qui la convertit en objet personnalisé.
Paramètres
-InputObject
Spécifie les chaînes JSON à convertir en objets JSON. Entrez une variable contenant la chaîne, ou tapez une commande ou une expression qui obtient la chaîne. Vous pouvez également diriger une chaîne vers ConvertFrom-Json
.
Le paramètre InputObject est obligatoire, mais sa valeur peut être une chaîne vide. Lorsque l’objet d’entrée est une chaîne vide, ConvertFrom-Json
ne génère aucune sortie. La valeur InputObject ne peut pas être $null
.
Type: | String |
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 une chaîne JSON vers ConvertFrom-Json
.
Sorties
PSCustomObject
Notes
L’applet ConvertFrom-Json
de commande est implémentée à l’aide de la classe JavaScriptSerializer.
Le type PSObject conserve l’ordre des propriétés comme indiqué dans la chaîne JSON. Bien que les paires clé-valeur soient ajoutées à la table de hachage dans l’ordre présenté dans la chaîne JSON, les objets hashtable ne conservent pas cet ordre.