Схема JSON для проверки того, что имя свойства соответствует вложенному значению - PullRequest
0 голосов
/ 11 мая 2018

Мы используем JSON для хранения некоторых настроек конфигурации.Например:

{
  "source1": {
    "name": "source1",
    "standalone": false
  },
  "source2": {
    "name": "source2",
    "standalone": true
  },
  "source3": {
    "name": "source3",
    "standalone": true
  }
}

Как видите, имена источников являются переменными и для удобства повторяются внутри объекта под свойством name.

В настоящее время мы проверяем это, используясхема JSON выглядит следующим образом:

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "type": "object",
  "patternProperties": {
    "^\\w[-\\w_]*$": { "$ref": "#/definitions/source" }
  },
  "additionalProperties": false,
  "definitions": {
    "source": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "standalone": { "type": "boolean" }
      },
      "required": ["name", "standalone"],
      "additionalProperties": false
    }
  }
}

Есть ли способ требовать, чтобы имя свойства совпадало со значением, используя схему JSON?Другими словами, есть ли способ убедиться, что следующий пример не проходит проверку?

{
  "a": {
    "name": "b",
    "standalone": false
  }
}
...