Test-Json
Teste si une chaîne est un document JSON valide
Syntaxe
JsonString (Par défaut)
Test-Json
[-Json] <String>
[-Options <String[]>]
[<CommonParameters>]
JsonStringWithSchemaString
Test-Json
[-Json] <String>
[-Schema] <String>
[-Options <String[]>]
[<CommonParameters>]
JsonStringWithSchemaFile
Test-Json
[-Json] <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPath
Test-Json
-Path <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPathWithSchemaString
Test-Json
[-Schema] <String>
-Path <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPathWithSchemaFile
Test-Json
-Path <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPath
Test-Json
-LiteralPath <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPathWithSchemaString
Test-Json
[-Schema] <String>
-LiteralPath <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPathWithSchemaFile
Test-Json
-LiteralPath <String>
-SchemaFile <String>
[-Options <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 -ErrorAction SilentlyContinue
False
Dans cet exemple, nous utilisons le paramètre ErrorAction pour supprimer le message d’erreur. Sans ce paramètre, la commande génère également 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.
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
JsonString
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
JsonStringWithSchemaString
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
JsonStringWithSchemaFile
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | 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.
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 |
| Alias: | PSPath, DP |
Jeux de paramètres
JsonLiteralPath
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
JsonLiteralPathWithSchemaString
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
JsonLiteralPathWithSchemaFile
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-Options
Par défaut, Test-Json ne prend pas en charge JSON contenant des commentaires ou des virgules de fin. Ce paramètre vous permet de spécifier des options pour modifier le comportement par défaut. Les options suivantes sont disponibles :
IgnoreCommentsAllowTrailingCommas
Ce paramètre a été ajouté dans PowerShell 7.5.0-preview.4.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Valeurs acceptées: | IgnoreComments, AllowTrailingCommas |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | 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.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | True |
| DontShow: | False |
Jeux de paramètres
JsonPath
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
JsonPathWithSchemaString
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
JsonPathWithSchemaFile
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| 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
JsonStringWithSchemaString
| Position: | 1 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
JsonLiteralPathWithSchemaString
| Position: | 1 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
JsonPathWithSchemaString
| Position: | 1 |
| Obligatoire: | True |
| 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
JsonStringWithSchemaFile
| Position: | 1 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
JsonLiteralPathWithSchemaFile
| Position: | 1 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
JsonPathWithSchemaFile
| Position: | 1 |
| Obligatoire: | True |
| 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
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 sur 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 from Newtonsoft.Json to System.Text.Json.
Pour plus d’informations sur les spécifications de schéma JSON, consultez la documentation sur JSON-Schema.org.