Sdílet prostřednictvím


Test-Json

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

Syntax

__AllParameterSets (Výchozí)

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

SchemaString

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

SchemaFile

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 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
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

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, používá místo toho ř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 máme schema.json soubor, který odkazuje na 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

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ů

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

-Schema

Určuje schéma pro ověření vstupu JSON. Pokud je předáno, ověří, že vstup JSON odpovídá specifikaci určené parametrem Schema, a vrátí se $true pouze v případě, Test-Json ž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ů

SchemaString
Position:2
Povinné:False
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ů

SchemaFile
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

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

Řetězec JSON můžete převést na Test-Json.

Výstupy

Boolean

Poznámky

Rutina Test-Json je implementována pomocí třídy NJsonSchema.

Od PowerShellu 6 používá PowerShell 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í naleznete v dokumentaci k Newtonsoft na https://www.newtonsoft.com/json.