Partager via


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:
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 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, le schema.json fichier fait référence definitions.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 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 $true retourne 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

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 sinon $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 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.