Test-Json
Teste si une chaîne est un document JSON valide
Syntaxe
Test-Json
[-Json] <String>
[<CommonParameters>]
Test-Json
[-Json] <string>
[-Schema] <string>
[<CommonParameters>]
Test-Json
[-Json] <string>
[-SchemaFile] <string>
[<CommonParameters>]
Test-Json
[-Path] <string>
[<CommonParameters>]
Test-Json
[-Path] <string>
[-Schema] <string>
[<CommonParameters>]
Test-Json
[-Path] <string>
[-SchemaFile] <string>
[<CommonParameters>]
Test-Json
[-LiteralPath] <string>
[<CommonParameters>]
Test-Json
[-LiteralPath] <string>
[-Schema] <string>
[<CommonParameters>]
Test-Json
[-LiteralPath] <string>
[-SchemaFile] <string>
[<CommonParameters>]
Description
L’applet Test-Json
de commande 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 ConvertFrom-Json
de commande pour 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 en vue de la communication entre les serveurs et les applications basées sur le web.
L’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
| ~~~~~~~~~~~~~~~~~~~~~~~~~
| The JSON is not valid with the schema: Value is "string" but should be "integer" at '/age'
False
Dans cet exemple, nous obtenons une erreur, car le schéma attend un entier pour l’âge , mais l’entrée JSON que nous avons testée utilise plutôt une valeur de chaîne.
Pour plus d’informations, consultez Schéma JSON.
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 du $ref
mot clé. Le $ref
fichier 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 autorise la validation des fichiers JSON par rapport à ces schémas.
Dans cet exemple, les références definitions.json
de schema.json
fichier .
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 contenant la chaîne, ou tapez une commande ou une expression qui obtient la chaîne. Vous pouvez également diriger une chaîne vers Test-Json
.
Le paramètre Json est requis.
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 |
-LiteralPath
Spécifie un chemin d’accès à un fichier JSON. La valeur de LiteralPath est utilisée exactement comme elle est typée. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement.
Ce paramètre a été ajouté dans PowerShell 7.4.
Type: | String |
Alias: | PSPath, LP |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-Path
Spécifie le chemin d’accès à un fichier JSON. Cette applet de commande obtient l’élément à l’emplacement spécifié. Les caractères génériques sont autorisés, mais le modèle doit être résolu en un seul fichier.
Ce paramètre a été ajouté dans PowerShell 7.4.
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: | True |
-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 schéma et retourne $true
uniquement si l’entrée est conforme au schéma fourni.
Pour plus d’informations, consultez Schéma JSON.
Type: | String |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-SchemaFile
Spécifie un fichier de schéma utilisé pour valider l’entrée JSON. En cas d’utilisation, la Test-Json
valeur renvoie $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 Schéma JSON.
Type: | String |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
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 sinon $false
.
Notes
Depuis PowerShell 6, PowerShell utilise les assemblys Newtonsoft.Json pour 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 à l’adresse https://www.newtonsoft.com/json.
À compter de PowerShell 7.4, Test-Json
utilise System.Text.Json pour l’analyse JSON et JsonSchema.NET pour la validation de schéma.
Avec ces modifications, Test-Json
:
- Ne prend plus en charge les schémas Draft 4
- Prend uniquement en charge json strictement conforme
Pour obtenir la liste complète des différences entre Newtonsoft.Json et System.Text.Json, consultez la table des différences dans Migrate de Newtonsoft.Json vers System.Text.Json.
Pour plus d’informations sur les spécifications de schéma JSON, consultez la documentation sur JSON-Schema.org.