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.