Test-Json
Проверяет, является ли строка допустимым документом JSON
Синтаксис
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>]
Описание
Командлет Test-Json
проверяет, является ли строка допустимым документом нотации объектов JavaScript (JSON) и может при необходимости проверить, что документ JSON соответствует предоставленной схеме.
Затем проверенную строку можно использовать с ConvertFrom-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:
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
В этом примере возникает ошибка, так как схема ожидает целое число для возраста , но входные данные JSON, которые мы проверили, вместо этого использует строковое значение.
Дополнительные сведения см. в схеме JSON.
Пример 3. Проверка объекта на основе схемы из файла
Схема JSON может ссылаться на определения с помощью $ref
ключевого слова. Может $ref
разрешиться в универсальный код ресурса (URI), ссылающийся на другой файл. Параметр SchemaFile принимает литеральный путь к файлу схемы JSON и позволяет проверять файлы JSON на основе таких схем.
В этом примере schema.json
ссылки на 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
Дополнительные сведения см. в разделе "Структурирование сложной схемы".
Параметры
-Json
Указывает строку JSON для проверки допустимости. Введите переменную, содержащую строку, либо введите команду или выражение для получения строки. Можно также передать строку Test-Json
в .
Требуется параметр Json.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-LiteralPath
Указывает путь к JSON-файлу. Значение LiteralPath используется точно так же, как оно типизированно. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Этот параметр добавлен в PowerShell 7.4.
Тип: | String |
Aliases: | PSPath, LP |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Path
Указывает путь к JSON-файлу. Этот командлет получает элемент в указанном расположении. Подстановочные знаки разрешены, но шаблон должен разрешаться в один файл.
Этот параметр добавлен в PowerShell 7.4.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | True |
-Schema
Указывает схему для проверки входных данных JSON. Если входные данные JSON соответствуют спецификации, указанной параметром схемы, Test-Json
и возвращается $true
только в том случае, если входные данные соответствуют предоставленной схеме.
Дополнительные сведения см. в схеме JSON.
Тип: | String |
Position: | 1 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-SchemaFile
Указывает файл схемы, используемый для проверки входных данных JSON. При использовании возвращается $true
только в том случае, Test-Json
если входные данные JSON соответствуют схеме, определенной в файле, указанном параметром SchemaFile.
Дополнительные сведения см. в схеме JSON.
Тип: | String |
Position: | 1 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Строку JSON можно передать в этот командлет.
Выходные данные
Boolean
Этот командлет возвращает $true
значение, если json является допустимым и в противном случае $false
.
Примечания
Так как PowerShell 6, PowerShell использует сборки Newtonsoft.Json для функций JSON. Реализация Newtonsoft включает несколько расширений в стандарт JSON, например поддержку комментариев и использование отдельных кавычки. Полный список функций см. в документации https://www.newtonsoft.com/jsonпо Newtonsoft.
Начиная с PowerShell 7.4, Test-Json
использует System.Text.Json для анализа JSON и JsonSchema.NET для проверки схемы.
С этими изменениями: Test-Json
- Больше не поддерживает схемы Черновика 4
- Поддерживает только строго соответствующее JSON
Полный список различий между Newtonsoft.Json и System.Text.Json см. в таблице различий в миграции из Newtonsoft.Json в System.Text.Json.
Дополнительные сведения о спецификациях схемы JSON см. в документации по JSON-Schema.org.
Связанные ссылки
PowerShell