[Перевод] Валидация JSON из командной строки Linux
Таким образом появилась так называемая схема JSON (в настоящий момент 4-я версия черновика IETF), которая определяет структуру данных JSON в декларативном формате, так же, как схема базы данных определяет логическую структуру и взаимоотношение записей базы данных. Сама схема JSON записана в JSON. Схема JSON может быть довольно полезна не только для генерации правильно форматированных данных JSON, но также для проверки корректности структуры данных JSON.
Это руководство затронет два аспекта валидации JSON с соблюдением схемы JSON. Во-первых, вы можете валидировать данные JSON по схеме JSON, т.е., проверять, чтобы данные JSON соответствовали спецификации из схемы JSON. Другой аспект валидации — это валидация схемы, когда вы проверяете, чтобы сама схема JSON была правильно оформлена в соответствии с Интернет-черновиком схемы JSON. В обоих случаях я покажу вам, как произвести необходимую валидацию из командной строки Linux.
Валидация данных JSON по схеме JSON из командной строки
Есть много библиотек и утилит с открытым исходным кодом, которые погут валидировать данные JSON. Одна из них — это библиотека
JSON-Spec
на python, которая идет с утилитой командной строки json
.Чтобы установить JSON-Spec
на Linux, для начала установите pip
, а затем установите ее, как показано далее.
$ sudo pip install json-spec
Затем вы можете валидировать данные JSON по схеме JSON в следующей форме:
$ json validate --schema-file=schema.json --document-file=data.json
$ json validate --schema-file=schema.json < data.json
$ json validate --schema-file=schema.json --document-json='{"foo": ["bar", "baz"]}'
Давайте используем следующие примеры данных JSON и схемы JSON и посмотрим, как данные JSON могут быть валидированы по схеме JSON.
data.json:
{
"id" : 1,
"name": "Dan Nanni",
"age": 25,
"skills": ["написание скриптов", "работа в дата-центре"]
}
schema.json:
{
"title": "Работник",
"description": "Информация о работнике",
"type": "object",
"properties": {
"id": {
"description": "Уникальный идентификатор работника",
"type": "integer"
},
"name": {
"description": "Имя работника",
"type": "string"
},
"age": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": true
},
"skills": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"uniqueItems": true
}
},
"required": ["id", "name", "age"]
}
Взяв приведенные выше примеры, валидируйте
data.json
по schema.json
, как показано далее.$ json validate --schema-file=schema.json --document-file=data.json
Если данные JSON соответствуют схеме, команда ничего не выдаст. Если нет, команда выдаст исключение:
Exception: document does not validate with schema.
#/
- reason Missing property
Исключение: документ не соответствует схеме.
#/
- причина Отсутствующее свойство
Валидация схемы JSON из командной строки
Еще один аспект валидации JSON — это проверять соответствует ли сама схема JSON правильному синтаксису. Для валидации схемы пригодится инструмент на Java под названием
json-schema-validator
. Этот инструмент поддерживает валидацию синтаксиса для самой последней 4-й версии черновика схемы JSON. Он может работать независимо из командной строки или может быть интегрирован в процесс сборки Maven как плагин.Для запуска его из командной строки вы можете скачать исполняемую версию JAR из Bintray. Убедитесь, что скачиваете архив json-schema-validator-X.X.X-lib.jar
, в который включены все зависимости.
После скачивания, проверьте валидность схемы JSON из командной строки, как показано далее.
$ java -jar json-schema-validator-2.2.6-lib.jar --syntax schema.json
--- BEGIN /home/dan/schema.json---
validation: SUCCESS
--- END /home/dan/schema.json---
--- НАЧАЛО /home/dan/schema.json---
валидация: УСПЕШНО
--- КОНЕЦ /home/dan/schema.json---