Схема JSON для объекта, значением которого является массив объектов

Я пишу программу, которая может читать данные JSON из файла. В файле содержится «человек» - объект, значением которого является массив объектов. Я планирую использовать библиотеки проверки схемы JSON для проверки содержимого вместо того, чтобы писать код самостоятельно. Какая правильная схема соответствует схеме JSON Draf-4, которая представляет данные ниже?

{
   "person" : [
      {
         "name" : "aaa",
         "age"  : 10
      },
      {
         "name" : "ddd",
         "age"  : 11
      },
      {
         "name" : "ccc",
         "age"  : 12
      }
   ]
}

Записанная схема приведена ниже. Я не уверен, правильно ли это или есть другая форма?

{
   "person" : {
      "type" : "object",
      "properties" : {
         "type" : "array",
         "items" : {
            "type" : "object",
            "properties" : {
               "name" : {"type" : "string"},
               "age" : {"type" : "integer"}
            }
         }
      }
   }
}

person nithin    schedule 27.07.2016    source источник


Ответы (1)


На самом деле у вас есть только одна строка в неправильном месте, но эта одна строка нарушает всю схему. "person" является свойством объекта и, следовательно, должно находиться под ключевым словом properties. Помещая «person» вверху, схема JSON интерпретирует его как ключевое слово, а не имя свойства. Поскольку ключевого слова person нет, схема JSON игнорирует его и все, что ниже него. Следовательно, это то же самое, что проверка по пустой схеме {}, которая не накладывает ограничений на то, что может содержать документ JSON. Любой действительный JSON действителен для пустой схемы.

{
   "type" : "object",
   "properties" : {
      "person" : {
         "type" : "array",
         "items" {
            "type" : "object",
            "properties" : {
               "name" : {"type" : "string"}
               "age" : {"type" : "integer"}
            }
         }
      }
   }
}

Кстати, есть несколько онлайн-инструментов для тестирования схемы JSON, которые могут помочь вам при создании ваших схем. Это мой goto http://jsonschemalint.com/draft4/#

Кроме того, вот отличная ссылка на схему JSON, которая также может вам помочь: https://spacetelescope.github.io/understanding-json-schema/

person Jason Desrosiers    schedule 27.07.2016