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>]
Test-Json
[-Path] <string>
[<CommonParameters>]
Test-Json
[-Path] <string>
[-Schema] <string>
[<CommonParameters>]
Test-Json
[-Path] <string>
[-SchemaFile] <string>
[<CommonParameters>]
Test-Json
[-LiteralPath] <string>
[<CommonParameters>]
Test-Json
[-LiteralPath] <string>
[-Schema] <string>
[<CommonParameters>]
Test-Json
[-LiteralPath] <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
| ~~~~~~~~~~~~~~~~~~~~~~~~~
| The JSON is not valid with the schema: Value is "string" but should be "integer" at '/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 |
-LiteralPath
Určuje cestu k souboru JSON. Hodnota LiteralPath se používá přesně tak, jak je zadána. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence.
Tento parametr byl přidán v PowerShellu 7.4.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Určuje cestu k souboru JSON. Tato rutina získá položku v 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.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-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
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í najdete v dokumentaci k Newtonsoftu na adrese https://www.newtonsoft.com/json.
Počínaje PowerShellem 7.4 Test-Json
používá System.Text.Json pro parsování JSON a JsonSchema.NET k ověření schématu.
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 migraci z Newtonsoft.Json do System.Text.Json.
Další informace o specifikacích schématu JSON najdete v dokumentaci na JSON-Schema.org.
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