-1

私はjsonとjsonスキーマにまったく慣れていないので、質問があります(まだ、それがどれほど意味があるかわかりません)。同様のタイプの構造に共通する json スキーマを作成できますか。例えば:

単一のスキーマを使用して、次の json を検証できます

JSON:

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

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

類似点:

  1. どちらも配列内にオブジェクトが 1 つしかありません
  2. オブジェクトには文字列値があります。

相違点:

  1. 物件数が違う
  2. キーは両方で異なります

これはできますか?

4

1 に答える 1

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 つ、最大 1 つのアイテムが必要です

"oneOf": [ ... ]

両方の配列のプロパティは項目によって定義されます

"Story_Taller" には "Chapter" と "Story" が必要で、追加のプロパティはありません。"Team_Table" には "Name"、"Match"、"Won" が必要で、追加のプロパティはありません。そして、それらはすべて文字列として定義されています。

于 2015-03-16T08:56:17.243 に答える