Test-Json
Testar om en sträng är ett giltigt JSON-dokument
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
Cmdleten Test-Json
testar om en sträng är ett giltigt JSON-dokument (JavaScript Object Notation) och kan också verifiera JSON-dokumentet mot ett angivet schema.
Den verifierade strängen kan sedan användas med cmdleten ConvertFrom-Json
konvertera en JSON-formaterad sträng till ett JSON-objekt, som enkelt hanteras i PowerShell eller skickas till ett annat program eller en annan webbtjänst som har åtkomst till JSON-indata.
Många webbplatser använder JSON i stället för XML för att serialisera data för kommunikation mellan servrar och webbaserade appar.
Den här cmdleten introducerades i PowerShell 6.1
Exempel
Exempel 1: Testa om ett objekt är giltigt JSON
I det här exemplet testas om indatasträngen är ett giltigt JSON-dokument.
'{"name": "Ashley", "age": 25}' | Test-Json
True
Exempel 2: Testa ett objekt mot ett angivet schema
Det här exemplet tar en sträng som innehåller ett JSON-schema och jämför den med en indatasträng.
$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
I det här exemplet får vi ett fel eftersom schemat förväntar sig ett heltal för ålder , men JSON-indata som vi testade använder ett strängvärde i stället.
Mer information finns i JSON-schema.
Exempel 3: Testa ett objekt mot ett schema från en fil
JSON-schemat kan referera till definitioner med hjälp av $ref
nyckelord. $ref
Kan matcha till en URI som refererar till en annan fil. Parametern SchemaFile accepterar literalsökvägen till JSON-schemafilen och tillåter att JSON-filer verifieras mot sådana scheman.
I det här exemplet schema.json
refererar filen till 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
Mer information finns i Strukturera ett komplext schema.
Parametrar
-Json
Anger JSON-strängen som ska testas för giltighet. Ange en variabel som innehåller strängen eller skriv ett kommando eller uttryck som hämtar strängen. Du kan också skicka en sträng till Test-Json
.
Json-parametern krävs.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-LiteralPath
Anger en sökväg till en JSON-fil. Värdet för LiteralPath används exakt som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken gör att PowerShell inte tolkar några tecken som escape-sekvenser.
Den här parametern lades till i PowerShell 7.4.
Typ: | String |
Alias: | PSPath, LP |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-Path
Anger sökvägen till en JSON-fil. Den här cmdleten hämtar objektet på den angivna platsen. Jokertecken tillåts men mönstret måste matcha till en enda fil.
Den här parametern lades till i PowerShell 7.4.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | True |
-Schema
Anger ett schema som JSON-indata ska verifieras mot. Om det skickas Test-Json
kontrollerar du att JSON-indata överensstämmer med specifikationen som anges av parametern Schema och returnerar $true
endast om indata överensstämmer med det angivna schemat.
Mer information finns i JSON-schema.
Typ: | String |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-SchemaFile
Anger en schemafil som används för att verifiera JSON-indata. När den Test-Json
används returneras $true
endast om JSON-indata överensstämmer med schemat som definierats i filen som anges av parametern SchemaFile .
Mer information finns i JSON-schema.
Typ: | String |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
Du kan skicka en JSON-sträng till den här cmdleten.
Utdata
Boolean
Den här cmdleten returnerar $true
om JSON är giltig och annars $false
.
Kommentarer
Sedan PowerShell 6 använder PowerShell Newtonsoft.Json-sammansättningarna för JSON-funktioner. Newtonsofts implementering innehåller flera tillägg till JSON-standarden, till exempel stöd för kommentarer och användning av enkla citattecken. En fullständig lista över funktioner finns i Newtonsoft-dokumentationen på https://www.newtonsoft.com/json.
Från och med PowerShell 7.4 Test-Json
använder System.Text.Json för JSON-parsning och JsonSchema.NET för schemaverifiering.
Med dessa ändringar: Test-Json
- Stöder inte längre utkast 4-scheman
- Stöder endast strikt överensstämmande JSON
En fullständig lista över skillnader mellan Newtonsoft.Json och System.Text.Json finns i tabellen med skillnader i Migrera från Newtonsoft.Json till System.Text.Json.
Mer information om JSON-schemaspecifikationer finns i dokumentationen på JSON-Schema.org.