jsonSchema проверяет ключи

Не могли бы вы помочь мне, как я могу проверить «ключи» (например, «1», «2», «3») элементов списка в следующем json:

   {
    "list" : {
        "1" : {
            "element1" : "1",
            "element2" : "2"
        },
        "2" : {
            "element1" : "1",
            "element2" : "2"
        },
        ....
        "512" : {
            "element1" : "1",
            "element2" : "2"
        }
    }
   }

Пожалуйста, дайте мне также общие примеры проверки ключей в json.


person Dmitry K    schedule 07.09.2016    source источник
comment
Возможно, мой json недействителен (spacetelescope.github.io/understanding-json -схема/ссылка/)   -  person Dmitry K    schedule 08.09.2016
comment
codebeautify.org/jsonviewer вы можете редактировать, проверять или украшать свой json .   -  person Rafaf Tahsin    schedule 08.09.2016
comment
и что на самом деле вы подразумеваете под подтверждением?   -  person Rafaf Tahsin    schedule 08.09.2016
comment
Да, я имею в виду проверку с использованием схемы json.   -  person Dmitry K    schedule 08.09.2016
comment
Ссылка выше работает?   -  person Rafaf Tahsin    schedule 08.09.2016
comment
Спасибо! Это очень полезно!!   -  person Dmitry K    schedule 09.09.2016


Ответы (1)


Схема JSON имеет три способа ограничить имена свойств объекта.

свойства

Ключевое слово properties позволяет установить точное совпадение имен свойств.

{
  "type": "object",
  "properties": {
    "1": { ... },
    "2": { ... },
    ...
  }
}

Свойства шаблона

Ключевое слово patternProperties ограничивает любое имя свойства, которое соответствует регулярному выражению, для проверки по заданной схеме.

{
  "type": "object",
  "patternProperties": {
    "[1-9][0-9]*": { ... }
  }
}

названия свойств

Ключевое слово propertyNames ограничивает имена свойств в соответствии с заданной схемой.

{
  "type": "object",
  "propertyNames": {
    "pattern": "[1-9][0-9]*"
  }
}

Редактировать 19-12-2018 Улучшить ответ, добавить отсутствующий patternProperties, добавить новый (начиная с исходного ответа) вариант propertyNames.

person Jason Desrosiers    schedule 08.09.2016
comment
Это кажется несовместимым с функцией jsonschema под названием patternProperties ... json-schema.org/understanding-json-schema/reference/ - person dreftymac; 15.12.2018
comment
Вау, ты прав! Не знаю, о чем я думал, когда писал это. Теперь также есть propertyNames. Я обновлю ответ, когда у меня будет шанс. - person Jason Desrosiers; 15.12.2018