Test-Json

Testuje, jestli je řetězec platným dokumentem JSON.

Syntax

Test-Json
    [-Json] <String>
    [<CommonParameters>]
Test-Json
    [-Json] <String>
    [[-Schema] <String>]
    [<CommonParameters>]
Test-Json
    [-Json] <String>
    [-SchemaFile <String>]
    [<CommonParameters>]

Description

Rutina Test-Json testuje, jestli je řetězec platným dokumentem JSON (JavaScript Object Notation) a může volitelně ověřit, že dokument JSON je v zadaném schématu.

Ověřený řetězec se pak dá použít s ConvertFrom-Json rutinou, která převede řetězec ve formátu JSON na objekt JSON, který se snadno spravuje v PowerShellu nebo odesílá do jiného programu nebo webové služby, která přistupuje ke vstupu JSON.

Mnoho webů používá json místo XML k serializaci dat pro komunikaci mezi servery a webovými aplikacemi.

Tato rutina byla představena v PowerShellu 6.1.

Příklady

Příklad 1: Test, jestli je objekt platný JSON

Tento příklad testuje, jestli je vstupní řetězec platným dokumentem JSON.

'{"name": "Ashley", "age": 25}' | Test-Json

True

Příklad 2: Testování objektu na zadaném schématu

Tento příklad přebírá řetězec obsahující schéma JSON a porovnává ho se vstupním řetězcem.

$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

V tomto příkladu se zobrazí chyba, protože schéma očekává celé číslo pro věk , ale vstup JSON, který jsme otestovali, místo toho používá řetězcovou hodnotu.

Další informace najdete ve schématu JSON.

Příklad 3: Testování objektu proti schématu ze souboru

Schéma JSON může odkazovat na definice pomocí $ref klíčového slova. Lze $ref přeložit na identifikátor URI, který odkazuje na jiný soubor. Parametr SchemaFile přijímá literálovou cestu k souboru schématu JSON a umožňuje, aby se soubory JSON ověřovaly na těchto schématech.

V tomto příkladu schema.json odkazuje soubor odkazy 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

Další informace naleznete v tématu Strukturování komplexního schématu.

Parametry

-Json

Určuje řetězec JSON, který se má testovat na platnost. Zadejte proměnnou, která obsahuje řetězec, nebo zadejte příkaz nebo výraz, který řetězec získá. Řetězec můžete také převést na Test-Json.

Parametr Json je povinný.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Schema

Určuje schéma pro ověření vstupu JSON. Pokud je zadáno, ověří, že vstup JSON odpovídá specifikaci zadané parametrem schématu, a vrátí se $true pouze v případě, Test-Json že vstup odpovídá zadanému schématu.

Další informace najdete ve schématu JSON.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SchemaFile

Určuje soubor schématu sloužící k ověření vstupu JSON. Pokud se použije, vrátí se pouze $true v případě, Test-Json že vstup JSON odpovídá schématu definovanému v souboru určeném parametrem SchemaFile.

Další informace najdete ve schématu JSON.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Vstupy

String

Do této rutiny můžete převést řetězec JSON.

Výstupy

Boolean

Tato rutina vrátí $true , pokud je JSON platný a jinak $false.

Poznámky

Rutina Test-Json se implementuje pomocí třídy NJsonSchema.

Vzhledem k tomu, že PowerShell 6 používá sestavení Newtonsoft.Json pro všechny funkce JSON. Implementace Newtonsoftu zahrnuje několik rozšíření standardu JSON, jako je podpora komentářů a použití jednoduchých uvozovek. Úplný seznam funkcí najdete v dokumentaci k Newtonsoftu na adrese https://www.newtonsoft.com/json.