Валидатор AJV всегда верен, даже с вводом мусора - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть три схемы

{
  "$id": "app.schema.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "app",
  "description": "Root configuration object",
  "properties": {
    "views" : {
      "description": "The pages in the application",
      "type" : "object",
      "properties" : {
        "summary" : {
          "$ref": "view.schema.json"
        }
      },
      "additionalItems": {
        "$ref": "view.schema.json"
      },
      "required" : ["summary"]
    }
  },
  "required": ["views"]
}
{
  "$id" : "component.schema.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title" : "component",
  "properties": {
    "type" : {
      "type" : "string",
      "enum" : ["container"]
    }
  },
  "anyOf": [
    {
      "properties": {
        "type" : {
          "enum" : ["container"]
        },
        "direction" : {
          "enum" : ["horizontal", "vertical"]
        }
      }
    }
  ]
}
{
  "$id" : "view.schema.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title" : "view",
  "additionalProperties" : {
    "description": "The components in this view",
    "$ref" : "component.schema.json"
  }
}

Я успешно загружаю эти файлы и добавляю их в экземпляр ajv с помощью addSchema.Однако всякий раз, когда я передаю какие-либо данные в validate, даже недействительный тарабарщина, validate всегда возвращает true.

Когда я проверяю свойство _schemas в экземпляре, все схемы присутствуют и выглядят так, как ихjson-файлы определяют.

Тестирование эквивалента с использованием ajv-cli (ajv -s schemas/app.schema -r schemas/view.schema -r schemas/component.schema -d plugin.json) завершается с ошибкой.Я скопировал и вставил тело функции валидатора в рабочий файл в моей IDE и в jsfiddle, и он работает в обеих этих средах.

1 Ответ

0 голосов
/ 27 февраля 2019

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

...