Выразите, что для данного значения свойства должно существовать свойство с тем же именем, используя схему json? - PullRequest
1 голос
/ 15 апреля 2019

Я пытаюсь проверить файлы json, у которых есть элемент со свойством, которое содержит значение, которое должно существовать в другой части json.Я использую jsonschema Draft 07.

Это простой небольшой пример, который показывает сценарий, который я пытаюсь проверить в моих данных.

{
  "objects": {
    "object1": {
      "colorKey": "orange"
    }
  },
  "colors": {
      "orange": {
          "red": "FF",
          "green": "AF",
          "blue": "00"
      }
  }
}

Как я могу проверить, что 'значение 'colorKey (в данном случае' orange ') фактически существует как свойство объекта' colors '?Данные не хранятся в массивах, только определенные свойства.

1 Ответ

0 голосов
/ 15 апреля 2019

Для официальной схемы JSON ... Вы не можете проверить, что ключ в данных совпадает со значением данных. Вы не можете извлечь значение данных из вашего экземпляра JSON для использования в вашей схеме JSON.

При этом ajv, самый популярный валидатор, реализует некоторые неофициальные расширения. Одним из которых является $ data.

Пример взят из: https://github.com/epoberezkin/ajv#data-reference

var ajv = new Ajv({$data: true});

var schema = {
  "properties": {
    "smaller": {
      "type": "number",
      "maximum": { "$data": "1/larger" }
    },
    "larger": { "type": "number" }
  }
};

var validData = {
  smaller: 5,
  larger: 7
};

ajv.validate(schema, validData); // true

Это не будет работать для других, использующих ваши схемы.

...