Валідація JSON з командного рядка Linux

Внаслідок синтаксичної простоти і гнучкості, JSON (JavaScript Object Notation, Об'єктна Нотація JavaScript став стандартом де-факто, використовуваним для обміну даними в багатьох веб-додатках. У зв'язку з тим, що JSON широко використовується для представлення структурованих даних з високим ступенем гнучкості, виникає необхідність мати можливість «валідувати» JSON-подання.

Таким чином з'явилася так звана схема 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---

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.