2015-03-15 7 views
-1

Я совершенно не знаком с json и json schema, поэтому у меня есть вопрос (но я не знаю, насколько это имеет смысл). Можем ли мы создать json-схему, которая является общей для аналогичного типа структуры. Например:Общая схема JSON для аналогичной структуры

Одна единственная схема может быть использована для проверки следующего JSON

JSON:

{ 
"Team_Table": 
[{"Name":"New Zealand", "Match":"Six", "Won":"Six"}] 
} 

И

{ 
"Story_Taller": 
[{"Story":"No Name", "Chapter":"Don't know"}] 
} 

Сходство:

  1. Оба имеет только один объект в массиве
  2. Объекты имеют строковое значение.

несходства:

  1. Количество свойств отличаются
  2. ключи различны в обоих

Можем ли мы сделать это?

+0

Пожалуйста, добавьте комментарий, пока голосом вверх или вниз. – Riki

ответ

0

Может быть, это поможет вам вместе:

{ 
    "properties": { 
    "Story_Taller": { 
     "type": "array", 
     "maxItems": 1, 
     "items": { 
     "properties": { 
      "Chapter": { 
      "type": "string" 
      }, 
      "Story": { 
      "type": "string" 
      } 
     }, 
     "additionalProperties": false 
     } 
    }, 
    "Team_Table": { 
     "type": "array", 
     "maxItems": 1, 
     "items": { 
     "properties": { 
      "Name": { 
      "type": "string" 
      }, 
      "Match": { 
      "type": "string" 
      }, 
      "Won": { 
      "type": "string" 
      } 
     }, 
     "additionalProperties": false 
     } 
    } 
    }, 
    "oneOf": [ 
    { 
     "title": "Story_Taller", 
     "required": [ 
     "Story_Taller" 
     ] 
    }, 
    { 
     "title": "Team_Table", 
     "required": [ 
     "Team_Table" 
     ] 
    } 
    ] 
} 

в (короткие) слова:

в вашем JSON должно быть одно свойство либо "Story_Taller" или "Team_Table" с максимумом 1 вещь

"oneOf": [ ... ] 

Свойства обоих массивов определяются позициями

«Story_Taller» должен иметь «Глава» и «История» и никаких дополнительных свойств. «Team_Table» должен иметь «Имя», «Матч», «Вон» и никаких дополнительных свойств. И все они определены как строки.

+0

@Riki это вам помогло? – stefankmitph