Test-Json
Teste si une chaîne est un document JSON valide
Syntaxe
__AllParameterSets (Par défaut)
Test-Json
[-Json] <String>
[<CommonParameters>]
SchemaString
Test-Json
[-Json] <String>
[[-Schema] <String>]
[<CommonParameters>]
SchemaFile
Test-Json
[-Json] <String>
[-SchemaFile <String>]
[<CommonParameters>]
Description
L’applet de commande Test-Json teste si une chaîne est un document JSON (JavaScript Object Notation) valide et peut éventuellement vérifier que le document JSON sur un schéma fourni.
La chaîne vérifiée peut ensuite être utilisée avec l’applet de commande ConvertFrom-Json convertir une chaîne au format JSON en objet JSON, qui est facilement gérée dans PowerShell ou envoyée à un autre programme ou service web qui accède à une entrée JSON.
De nombreux sites web utilisent JSON au lieu de XML pour sérialiser les données pour la communication entre les serveurs et les applications web.
Cette applet de commande a été introduite dans PowerShell 6.1
Exemples
Exemple 1 : Tester si un objet est valide JSON
Cet exemple teste si la chaîne d’entrée est un document JSON valide.
'{"name": "Ashley", "age": 25}' | Test-Json
True
Exemple 2 : Tester un objet par rapport à un schéma fourni
Cet exemple utilise une chaîne contenant un schéma JSON et la compare à une chaîne d’entrée.
$schema = @'
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://example.com/root.json",
"type": "object",
"title": "The Root Schema",
"required": [
"name",
"age"
],
"properties": {
"name": {
"$id": "#/properties/name",
"type": "string",
"title": "The Name Schema",
"default": "",
"examples": [
"Ashley"
],
"pattern": "^(.*)$"
},
"age": {
"$id": "#/properties/age",
"type": "integer",
"title": "The Age Schema",
"default": 0,
"examples": [
25
]
}
}
}
'@
'{"name": "Ashley", "age": "25"}' | Test-Json -Schema $schema
Test-Json:
Line |
35 | '{"name": "Ashley", "age": "25"}' | Test-Json -Schema $schema
| ~~~~~~~~~~~~~~~~~~~~~~~~~
| IntegerExpected: #/age
False
Dans cet exemple, nous obtenons une erreur, car le schéma attend un entier pour âge, mais l’entrée JSON que nous avons testée utilise plutôt une valeur de chaîne.
Exemple 3 : Tester un objet par rapport à un schéma à partir d’un fichier
Le schéma JSON peut référencer des définitions à l’aide de $ref mot clé. Le $ref peut être résolu en URI qui fait référence à un autre fichier. Le paramètre SchemaFile accepte le chemin littéral du fichier de schéma JSON et permet aux fichiers JSON d’être validés par rapport à ces schémas.
Dans cet exemple, les références de fichier schema.jsondefinitions.json.
Get-Content schema.json
{
"description":"A person",
"type":"object",
"properties":{
"name":{
"$ref":"definitions.json#/definitions/name"
},
"hobbies":{
"$ref":"definitions.json#/definitions/hobbies"
}
}
}
Get-Content definitions.json
{
"definitions":{
"name":{
"type":"string"
},
"hobbies":{
"type":"array",
"items":{
"type":"string"
}
}
}
}
'{"name": "James", "hobbies": [".NET", "Blogging"]}' | Test-Json -SchemaFile 'schema.json'
True
Pour plus d’informations, consultez Structurer un schéma complexe.
Paramètres
-Json
Spécifie la chaîne JSON à tester pour la validité. Entrez une variable qui contient la chaîne, ou tapez une commande ou une expression qui obtient la chaîne. Vous pouvez également rediriger une chaîne vers Test-Json.
Le paramètre json est requis.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 1 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Schema
Spécifie un schéma pour valider l’entrée JSON par rapport à. Si elle est passée, Test-Json valide que l’entrée JSON est conforme à la spécification spécifiée par le paramètre Schema et retourne $true uniquement si l’entrée est conforme au schéma fourni.
Pour plus d’informations, consultez de schéma JSON.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
SchemaString
| Position: | 2 |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-SchemaFile
Spécifie un fichier de schéma utilisé pour valider l’entrée JSON. Lorsqu’elle est utilisée, la Test-Json retourne $true uniquement si l’entrée JSON est conforme au schéma défini dans le fichier spécifié par le paramètre SchemaFile.
Pour plus d’informations, consultez de schéma JSON.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
SchemaFile
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
Entrées
String
Vous pouvez diriger une chaîne JSON vers cette applet de commande.
Sorties
Boolean
Cette applet de commande retourne $true si le json est valide et $false.
Notes
L’applet Test-Json de commande est implémentée à l’aide de la classe NJsonSchema.
Depuis PowerShell 6, PowerShell utilise les assemblys Newtonsoft.Json pour toutes les fonctions JSON. L’implémentation de Newtonsoft comprend plusieurs extensions à la norme JSON, telles que la prise en charge des commentaires et l’utilisation de guillemets simples. Pour obtenir la liste complète des fonctionnalités, consultez la documentation Newtonsoft sur https://www.newtonsoft.com/json.