[Перевод] Валидация JSON из командной строки Linux

15208c18d57341cdbd3e21113ae14f49.pngВследствие синтаксической простоты и гибкости, JSON (JavaScript Object Notation, Объектная Нотация JavaScript) стал стандартом де-факто, используемым для обмена данными во многих веб-приложениях. В связи с тем, что JSON широко используется для представления структурированных данных с высокой степенью гибкости, возникает необходимость иметь возможность «валидировать» JSON-представления.

Таким образом появилась так называемая схема JSON (в настоящий момент 4-я версия черновика IETF), которая определяет структуру данных JSON в декларативном формате, так же, как схема базы данных определяет логическую структуру и взаимоотношение записей базы данных. Сама схема JSON записана в JSON. Схема JSON может быть довольно полезна не только для генерации правильно форматированных данных JSON, но также для проверки корректности структуры данных JSON.

7e7751335c70469392b1debef0d40848.jpg

Это руководство затронет два аспекта валидации 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)

© Habrahabr.ru