Udostępnij przez


Test-Json

Sprawdza, czy ciąg jest prawidłowym dokumentem JSON

Składnia

__AllParameterSets (domyślnie)

Test-Json
    [-Json] <String>
    [<CommonParameters>]

SchemaString

Test-Json
    [-Json] <String>
    [[-Schema] <String>]
    [<CommonParameters>]

SchemaFile

Test-Json
    [-Json] <String>
    [-SchemaFile <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
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

W tym przykładzie występuje 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 mamy schema.json plik, do którego odwołuje się 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

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

(All)
Position:1
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Schema

Określa schemat do sprawdzania poprawności danych wejściowych JSON. Jeśli zostanie przekazany, sprawdzi, czy dane wejściowe JSON są zgodne ze specyfikacją określoną przez parametr Schema i zwrócą $true tylko wtedy, Test-Json 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

SchemaString
Position:2
Obowiązkowe:False
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

SchemaFile
Position:Named
Obowiązkowe:False
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

Możesz przekazać ciąg JSON do Test-Json.

Dane wyjściowe

Boolean

Uwagi

Polecenie Test-Json cmdlet jest implementowane przy użyciu klasy NJsonSchema.

Od programu PowerShell 6 program PowerShell używa zestawów Newtonsoft.Json dla wszystkich 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.