Почему JSON не проверяет схему?

Я получаю сообщение об ошибке «Дополнительные свойства не разрешены» для каждого ключа в элементе JSON. Ниже представлена ​​схема и элемент.

Схема:

    {
      "additionalProperties": false,
      "category": {
        "admin": {"type": "boolean"}
      },
      "username": {"type": "string"},
      "password": {"type": "string"},
      "name": {"type": "string"},
      "email": {"type": "string", "format": "email"},
      "phone": {"type": "string"},
      "hours": {
        "type": "array",
        "items": {
          "start": {"type": "string", "format": "date-time"},
          "end": {"type": "string", "format": "date-time"}
        }
      }
    }

Элемент:

    {
        "username": "emanb29",
        "password": "$2a$10$THISISAPASSWORDHASH",
        "name": "Ethan Bell",
        "email": "[email protected]",
        "phone": "5555555555",
        "hours": [
            {
                "start": "1998-05-29T04:00:00Z",
                "end": "1999-05-29T04:00:00Z"
            },
            {
                "start": "2001-05-29T10:20:00Z",
                "end": "2001-05-29T22:20:00Z"
            }
        ],
        "category": {
            "admin": true
        }
    }

person emanb29    schedule 19.11.2013    source источник
comment
Что вы используете для подтверждения этого?   -  person    schedule 19.11.2013
comment
jsonschemalint.com для тестирования, но планируется использовать пакет npm jsonschema в реализации node.js (npmjs.org/package/jsonschema)   -  person emanb29    schedule 19.11.2013


Ответы (1)


Ваша схема кажется подозрительной. Работая с примерами на jsonschemalint.com, я создал properties контейнер в корне для ваших свойств, добавил description и type в корень и также переместил additionalProperties в корень.

Это подтверждает ваш элемент на jsonschemalint.com:

{
    "description": "StackOverflow test schema", 
    "type": "object", 
    "additionalProperties": false,
    "properties":     {
      "category": {
        "admin": {"type": "boolean"}
      },
      "username": {"type": "string"},
      "password": {"type": "string"},
      "name": {"type": "string"},
      "email": {"type": "string", "format": "email"},
      "phone": {"type": "string"},
      "hours": {
        "type": "array",
        "items": {
          "start": {"type": "string", "format": "date-time"},
          "end": {"type": "string", "format": "date-time"}
        }
      }
    }
}
person Community    schedule 19.11.2013
comment
Похоже, это было исправление; Благодарность! Я неверно истолковал необходимость подобъекта свойств. Спасибо! - person emanb29; 19.11.2013