Partager via


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.

Pour plus d’informations, consultez de 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 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 :

  • IgnoreComments
  • AllowTrailingCommas

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.