Каковы функции, присутствующие в проекте схемы 4, которые не указаны в схеме схемы JSON 3, созданной IETF?
Проект схемы JSON4 Схема VS JSON draft3
Ответ 1
Из журналов изменений:
Новые ключевые слова
- anyOf (сопоставьте хотя бы одну схему в массиве схемы),
- allOf (соответствует всем схемам в массиве схемы),
- oneOf (соответствует только одной схеме в массиве схемы),
- нет (не соответствуют схеме),
- multipleOf (заменяет divisibleBy),
- minProperties и maxProperties (минимальное и максимальное количество членов в экземпляре объекта),
- (стандартизованный контейнер для встроенных подсхем).
Удалено:
- Disallow
- расширяет
- divisbleBy
Изменено в функциональности:
Тип
- Когда значение представляет собой массив, схемы больше не разрешены как элементы. Кроме того, массив должен иметь хотя бы один элемент.
До
{
"type": [ "string", { "other": "schema" } ]
}
Теперь
{
"anyOf": [
{ "type": "string" },
{ "other": "schema" }
]
}
Обязательно
- Раньше это был атрибут подсхемы в свойствах. Теперь это ключевое слово первого уровня, играющее ту же роль, и в качестве аргумента имеет строковый массив.
До
{
"properties": {
"p": {
"type": "string",
"required": true
},
"q": {
"type": "string",
"required": true
}
}
}
Теперь
{
"properties": {
"p": { "type": "string" },
"q": { "type": "string" }
},
"required": [ "p", "q" ]
}
Зависимости
- Одна строка в зависимостях свойств больше не разрешена, разрешены только массивы
До
{
"dependencies": { "a": "b" }
}
Теперь
{
"dependencies": { "a": [ "b" ] }
}
Ответ 2
Если вы заинтересованы в глубоком погружении, вы можете просмотреть разницу между двумя черновиками на сайте IETF.
Однако, если вы ищете более простое резюме изменений, Geraint Luff и Francis Galiegue создали страницу изменений в проекте github wiki который перечисляет изменения, добавления и удаления.