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
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.
Související odkazy
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro