Подтвердить что ты не робот

Понимание ключевого слова "AdditionalProperties" в проекте версии JSON версии 4

Ссылка на спецификацию: http://json-schema.org/latest/json-schema-validation.html#anchor64

В разделе 5.4.4.2 указано:

Успешная проверка экземпляра объекта с этими тремя ключевыми словами зависит от значения "дополнительные свойства": если его значение является логическим значением true или схемой, проверка завершается успешно;...

В разделе 5.4.4.3 указано:

Если "дополнительные свойства" отсутствует, его можно считать присутствующим с пустой схемой в качестве значения.

Хорошо, поэтому, если "дополнительные свойства" отсутствует, оно считается присутствующим с пустой схемой. И если это схема (любого вида), то объект успешно проверяется независимо от любого другого соображения.

Но это противоречит утверждению в разделе 5.4.4.5 "Пример", что данный экземпляр не может проверить на данную схему (что ничего не указывает на "дополнительные свойства" ).

Может кто-нибудь объяснить, где и каким образом я неверно истолковал спецификацию?

4b9b3361

Ответ 1

Вы обнаружили ошибку в спецификации, так что вы на самом деле неправильно интерпретируете что-то.

Существует обновленная версия (через два дня) интернет-проекта на веб-сайте IETF, где этот пример отличается.

см. ниже: http://tools.ietf.org/html/draft-fge-json-schema-validation-00#page-13

Поскольку документ представляет собой интернет-проект, скорее всего, версия на http://datatracker.ietf.org/ является правильной версией.

Статус этой заметки

Этот интернет-проект представлен в полном соответствии с положения BCP 78 и BCP 79.

Интернет-черновики - это рабочие документы Internet Engineering
Целевая группа (IETF)
. Обратите внимание, что другие группы также могут распространять рабочих документов в виде интернет-проектов. Список текущих интернет-сайтов Черновики находятся на http://datatracker.ietf.org/drafts/current/.

Интернет-проекты - это рабочие документы Интернет-инжиниринга
Целевая группа (IETF).

Кроме того, две версии имеют разные даты и даты истечения срока действия:

  • версия, на которую вы ссылаетесь - написано: 30 января 2013 г. и истекает: 3 августа 2013 г..
  • версия на ietf - написана на: 1 февраля 2013 г. и истекает: 5 августа 2013 г.

В версии IETF:

Эта схема будет использоваться в качестве примера:

   {
       "properties": {
           "p1": {}
       },
       "patternProperties": {
           "p": {},
           "[0-9]": {}
       },
       "additionalProperties": false

Это пример проверки:

{         "p1": true,         "p2": null,         "a32 & o": "foobar",         ": [],        " скрипка ": 42,        " apple ":" pie"}

Три набора свойств:

   s  [ "p1", "p2", "a32&o", "", "fiddle", "apple" ]

   p  [ "p1" ]

   pp [ "p", "[0-9]" ]

Применение двух шагов алгоритма:

      after the first step, "p1" is removed from "s";

      after the second step, "p2" (matched by "p"), "a32&o" (matched by
      "[0-9]") and "apple" (matched by "p") are removed from "s".

Набор "s" по-прежнему содержит два элемента: "и" скрипку". Проверка        поэтому не удается.