Test-Json

Проверяет, является ли строка допустимым документом JSON

Синтаксис

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

Описание

Командлет Test-Json проверяет, является ли строка допустимым документом нотации объектов JavaScript (JSON) и при необходимости может проверить, что документ JSON соответствует предоставленной схеме.

Затем проверенную строку можно использовать с ConvertFrom-Json командлетом для преобразования строки в формате JSON в объект JSON, который легко управляется в PowerShell или отправляется в другую программу или веб-службу, обращающуюся к входным данным JSON.

Многие веб-сайты используют нотацию JSON вместо XML для сериализации данных для взаимодействия между серверами и веб-приложениями.

Этот командлет впервые появился в PowerShell 6.1

Примеры

Пример 1. Проверка допустимости объекта JSON

В этом примере проверяется, является ли входная строка допустимым документом JSON.

"{'name': 'Ashley', 'age': 25}" | Test-Json

True

Пример 2. Тестирование объекта на соответствие предоставленной схеме

В этом примере берется строка, содержащая схему JSON, и сравнивается с входной строкой.

$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

В этом примере мы получаем ошибку, так как схема ожидает целое число для возраста , но входные данные JSON, которые мы протестировали, используют строковое значение.

Дополнительные сведения см. в разделе "Схема JSON".

Параметры

-Json

Указывает строку JSON для проверки на допустимость. Введите переменную, содержащую строку, либо введите команду или выражение для получения строки. Вы также можете передать строку в Test-Json.

Требуется параметр Json .

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Schema

Указывает схему для проверки входных данных JSON. Если передано Test-Json , входные данные Json соответствуют спецификации, заданной параметром схемы , и возвращаются $True только в том случае, если входные данные соответствуют предоставленной схеме.

Дополнительные сведения см. в разделе "Схема JSON".

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

String

Строку JSON Test-Jsonможно передать в .

Выходные данные

Boolean

Примечания

Командлет Test-Json реализуется с помощью класса NJsonSchema.