Sdílet prostřednictvím


Test-Json

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

Syntaxe

JsonString (Výchozí)

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

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

Ověřený řetězec se pak dá použít s rutinou ConvertFrom-Json převést ř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 -ErrorAction SilentlyContinue
False

V tomto příkladu použijeme parametr ErrorAction k potlačení chybové zprávy. Bez tohoto parametru příkaz také vypíše chybu, 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 v tématu 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. $ref lze přeložit na identifikátor URI, který odkazuje na jiný soubor. Parametr SchemaFile přijímá cestu literálu k souboru schématu JSON a umožňuje, aby se soubory JSON ověřovaly pro taková schémata.

V tomto příkladu schema.json soubor odkazuje 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 najdete 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 či výraz pro jeho získání. Můžete také přesměrovat řetězec na Test-Json.

Je vyžadován parametr json.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

JsonString
Position:0
Povinné:True
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
JsonStringWithSchemaString
Position:0
Povinné:True
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
JsonStringWithSchemaFile
Position:0
Povinné:True
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-LiteralPath

Určuje cestu k souboru JSON. Hodnota LiteralPath se používá přesně tak, jak je zadána. Žádný znak není interpretován jako zástupný znak. Pokud cesta obsahuje únikové znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby žádné znaky neinterpretoval jako únikové sekvence.

Tento parametr byl přidán v PowerShellu 7.4.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False
Aliasy:PSPath, PO

Sady parametrů

JsonLiteralPath
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False
JsonLiteralPathWithSchemaString
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False
JsonLiteralPathWithSchemaFile
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-Options

Ve výchozím nastavení Test-Json nepodporuje JSON obsahující komentáře ani koncové čárky. Tento parametr umožňuje zadat možnosti pro změnu výchozího chování. K dispozici jsou následující možnosti:

  • IgnoreComments
  • AllowTrailingCommas

Tento parametr byl přidán v PowerShellu 7.5.0-preview.4.

Vlastnosti parametru

Typ:

String[]

Default value:None
Přípustné hodnoty:IgnoreComments, AllowTrailingCommas
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Path

Určuje cestu k souboru JSON. Tento cmdlet získá položku na zadaném umístění. Zástupné znaky jsou povolené, ale vzor se musí přeložit na jeden soubor.

Tento parametr byl přidán v PowerShellu 7.4.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

JsonPath
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False
JsonPathWithSchemaString
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False
JsonPathWithSchemaFile
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-Schema

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

Další informace najdete v tématu schématu JSON.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

JsonStringWithSchemaString
Position:1
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
JsonLiteralPathWithSchemaString
Position:1
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
JsonPathWithSchemaString
Position:1
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-SchemaFile

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

Další informace najdete v tématu schématu JSON.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

JsonStringWithSchemaFile
Position:1
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
JsonLiteralPathWithSchemaFile
Position:1
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
JsonPathWithSchemaFile
Position:1
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

CommonParameters

Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.

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

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

Počínaje PowerShellem 7.4 používá Test-Json k ověřování schématu System.Text.Json pro parsování a JsonSchema.NET JSON. S těmito změnami Test-Json:

  • Už nepodporuje schémata Konceptu 4.
  • Podporuje pouze výhradně vyhovující JSON.

Úplný seznam rozdílů mezi Newtonsoft.Json a System.Text.Json najdete v Tabulce rozdílů v Migrace z Newtonsoft.Json na System.Text.Json.

Další informace o specifikacích schématu JSON najdete v dokumentaci na JSON-Schema.org.