Test-Json
Sprawdza, czy ciąg jest prawidłowym dokumentem JSON
Składnia
JsonString (Domyślna)
Test-Json
[-Json] <String>
[-Options <String[]>]
[<CommonParameters>]
JsonStringWithSchemaString
Test-Json
[-Json] <String>
[-Schema] <String>
[-Options <String[]>]
[<CommonParameters>]
JsonStringWithSchemaFile
Test-Json
[-Json] <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPath
Test-Json
-Path <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPathWithSchemaString
Test-Json
[-Schema] <String>
-Path <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPathWithSchemaFile
Test-Json
-Path <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPath
Test-Json
-LiteralPath <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPathWithSchemaString
Test-Json
[-Schema] <String>
-LiteralPath <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPathWithSchemaFile
Test-Json
-LiteralPath <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
Opis
Polecenie cmdlet Test-Json sprawdza, czy ciąg jest prawidłowym dokumentem JavaScript Object Notation (JSON) i opcjonalnie może sprawdzić, czy dokument JSON jest dokumentem JSON względem podanego schematu.
Zweryfikowany ciąg może być następnie używany z poleceniem cmdlet ConvertFrom-Json przekonwertować ciąg w formacie JSON na obiekt JSON, który jest łatwo zarządzany w programie PowerShell lub wysyłany do innego programu lub usługi internetowej, która uzyskuje dostęp do danych wejściowych JSON.
Wiele witryn sieci Web używa formatu JSON zamiast XML do serializacji danych na potrzeby komunikacji między serwerami i aplikacjami internetowymi.
To polecenie cmdlet zostało wprowadzone w programie PowerShell 6.1
Przykłady
Przykład 1. Testowanie, czy obiekt jest prawidłowym kodem JSON
W tym przykładzie sprawdza się, czy ciąg wejściowy jest prawidłowym dokumentem JSON.
'{"name": "Ashley", "age": 25}' | Test-Json
True
Przykład 2. Testowanie obiektu względem podanego schematu
W tym przykładzie ciąg zawiera schemat JSON i porównuje go z ciągiem wejściowym.
$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 -ErrorAction SilentlyContinue
False
W tym przykładzie użyjemy parametru ErrorAction , aby pominąć komunikat o błędzie. Bez tego parametru polecenie generuje również błąd, ponieważ schemat oczekuje liczby całkowitej dla wieku , ale testowane dane wejściowe JSON używają wartości ciągu.
Aby uzyskać więcej informacji, zobacz schemat JSON.
Przykład 3. Testowanie obiektu względem schematu z pliku
Schemat JSON może odwoływać się do definicji przy użyciu słowa kluczowego $ref.
$ref może rozpoznać identyfikator URI, który odwołuje się do innego pliku. Parametr SchemaFile akceptuje ścieżkę literału do pliku schematu JSON i umożliwia sprawdzanie poprawności plików JSON względem takich schematów.
W tym przykładzie plik schema.json odwołuje się 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
Aby uzyskać więcej informacji, zobacz Strukturyzowanie złożonego schematu.
Parametry
-Json
Określa ciąg JSON do przetestowania pod kątem ważności. Wprowadź zmienną zawierającą ciąg lub wpisz polecenie lub wyrażenie, które pobiera ciąg. Możesz również przekierować ciąg znaków do Test-Json.
Wymagany jest parametr Json.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
JsonString
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
JsonStringWithSchemaString
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
JsonStringWithSchemaFile
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-LiteralPath
Określa ścieżkę do pliku JSON. Wartość LiteralPath jest używana dokładnie tak, jak jest typowana. Żadne znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze cudzysłowy wskazują programowi PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Ten parametr został dodany w programie PowerShell 7.4.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | PSPath, LP |
Zestawy parametrów
JsonLiteralPath
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
JsonLiteralPathWithSchemaString
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
JsonLiteralPathWithSchemaFile
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
-Options
Domyślnie Test-Json nie obsługuje formatu JSON zawierającego komentarze ani przecinki końcowe. Ten parametr umożliwia określenie opcji zmiany zachowania domyślnego. Dostępne są następujące opcje:
IgnoreCommentsAllowTrailingCommas
Ten parametr został dodany w programie PowerShell 7.5.0-preview.4.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Dopuszczalne wartości: | IgnoreComments, AllowTrailingCommas |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Path
Określa ścieżkę do pliku JSON. To polecenie cmdlet pobiera element z określonej lokalizacji. Dozwolone są symbole wieloznaczne, ale wzorzec musi być rozpoznawany jako pojedynczy plik.
Ten parametr został dodany w programie PowerShell 7.4.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
JsonPath
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
JsonPathWithSchemaString
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
JsonPathWithSchemaFile
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
-Schema
Określa schemat do sprawdzania poprawności danych wejściowych JSON. W przypadku przekazania Test-Json sprawdza, czy dane wejściowe JSON są zgodne ze specyfikacją określoną przez parametr Schema i zwracają $true tylko wtedy, gdy dane wejściowe są zgodne z podanym schematem.
Aby uzyskać więcej informacji, zobacz schemat JSON.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
JsonStringWithSchemaString
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
JsonLiteralPathWithSchemaString
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
JsonPathWithSchemaString
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-SchemaFile
Określa plik schematu używany do sprawdzania poprawności danych wejściowych JSON. W przypadku użycia Test-Json zwraca $true tylko wtedy, gdy dane wejściowe JSON są zgodne ze schematem zdefiniowanym w pliku określonym przez parametr SchemaFile.
Aby uzyskać więcej informacji, zobacz schemat JSON.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
JsonStringWithSchemaFile
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
JsonLiteralPathWithSchemaFile
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
JsonPathWithSchemaFile
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
String
Do tego polecenia cmdlet można przekazać ciąg JSON.
Dane wyjściowe
Boolean
To polecenie cmdlet zwraca $true, jeśli kod JSON jest prawidłowy i w przeciwnym razie $false.
Uwagi
Od programu PowerShell 6 program PowerShell używa zestawów Newtonsoft.Json dla funkcji JSON. Implementacja rozwiązania Newtonsoft obejmuje kilka rozszerzeń standardu JSON, takich jak obsługa komentarzy i używanie pojedynczych cudzysłowów. Aby uzyskać pełną listę funkcji, zobacz dokumentację usługi Newtonsoft pod adresem https://www.newtonsoft.com/json.
Począwszy od programu PowerShell 7.4, Test-Json używa System.Text.Json na potrzeby analizowania i JsonSchema.NET w celu sprawdzania poprawności schematu.
Dzięki tym zmianom Test-Json:
- Nie obsługuje już schematów wersji roboczej 4
- Obsługuje tylko ściśle zgodny kod JSON
Aby uzyskać pełną listę różnic między plikiem Newtonsoft.Json i System.Text.Json, zobacz Tabela różnic w pliku Migrate from Newtonsoft.Json to System.Text.Json.
Aby uzyskać więcej informacji na temat specyfikacji schematu JSON, zobacz dokumentację w JSON-Schema.org.