2015-06-29 4 views
3

не путать никого, я начну с тестирующих массивов ...JSON Schema: проверка значений объекта, без ключей

Что касается массивов, JSON Schema можно проверить элементы в (((...) суб) суб) массив соответствует структуре:

"type": "array", 
"items": { 
    ... 
} 

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

"type": "object", 
"properties": { 
    // key-value pairs, might also define subschemas 
} 

Но что, если у меня есть объект, который я хочу использовать для проверки только значений только (без ключей)?

Моего реального случай пример, что я настройка кнопок: там может быть редактировать, удалить, добавить кнопки и так далее. Все они имеют определенную жесткую структуру, для которой у меня есть схема JSON. Но я не хочу ограничивать себя только ['edit', 'delete', 'add'], может быть publish или print в будущем. Но я знаю, что все они будут соответствовать моей подсхеме.

Каждая кнопка:

BUTTON = { 
    "routing": "...", 
    "params": { ... }, 
    "className": "...", 
    "i18nLabel": "..." 
} 

И у меня есть объект (не массив) кнопок:

{ 
    "edit": BUTTON, 
    "delete": BUTTON, 
    ... 
} 

Как я могу написать такую ​​схему JSON? Есть ли способ объединения object с items (Я знаю, что существуют свойства объекта и свойства массива).

ответ

4

Для этого можно использовать additionalProperties. Если вы установите additionalProperties на схему вместо логического, то любые свойства, которые явно не объявлены с использованием ключевых слов properties или patternProperties, должны соответствовать указанной схеме.

{ 
    "type": "object", 
    "additionalProperties": { 
    ... BUTTON SCHEMA ... 
    } 
} 

http://json-schema.org/latest/json-schema-validation.html#anchor64

+0

истинный эксперт JSON Schema вы :) – ducin

+0

Что, если вы хотите, чтобы сделать массив типа правила, которое должно быть по крайней мере одна пара ключей значение? Это также выполнимо? – majorBummer

+1

@majorBummer Да, просто добавьте '' minProperties: 1' – Jason

Смежные вопросы