Test-Json
Teste si une chaîne est un document JSON valide
Syntax
Test-Json
[-Json] <String>
[<CommonParameters>]
Test-Json
[-Json] <String>
[[-Schema] <String>]
[<CommonParameters>]
Test-Json
[-Json] <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 ce document JSON par rapport à 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 à l’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 json valide
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 sur un schéma fourni
Cet exemple prend une chaîne contenant un schéma JSON et le 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 : IntegerExpected: #/age
At line:1 char:37
+ "{'name': 'Ashley', 'age': '25'}" | Test-Json -Schema $schema
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Test-Json], Exception
+ FullyQualifiedErrorId : InvalidJsonAgainstSchema,Microsoft.PowerShell.Commands.TestJsonCommand
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 une valeur de chaîne à la place.
Pour plus d’informations, consultez Schéma JSON.
Exemple 3 : Tester un objet sur un schéma à partir d’un fichier
Le schéma JSON peut référencer des définitions à l’aide $ref
de mot clé. $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, nous avons un schema.json
fichier qui fait référence definitions.json
à .
PS> Get-Content schema.json
{
"description":"A person",
"type":"object",
"properties":{
"name":{
"$ref":"definitions.json#/definitions/name"
},
"hobbies":{
"$ref":"definitions.json#/definitions/hobbies"
}
}
}
PS> 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 Structuration d’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 obligatoire.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Schema
Spécifie un schéma sur lequel valider l’entrée JSON. En cas de réussite, Test-Json
vérifie 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 Schéma JSON.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SchemaFile
Spécifie un fichier de schéma utilisé pour valider l’entrée JSON. Lorsqu’il est utilisé, le 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 Schéma JSON.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger une chaîne JSON vers Test-Json
.
Sorties
Boolean
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 inclut plusieurs extensions à la norme JSON, telles que la prise en charge des commentaires et l’utilisation de guillemets uniques. Pour obtenir la liste complète des fonctionnalités, consultez la documentation newtonsoft à l’adresse https://www.newtonsoft.com/json.