0

私が見たほとんどのjsonスキーマの例では、キーワード「アイテム」は「配列」に関連付けられているようです。ただし、この便利なツールを使用してオブジェクトで使用してみました: http://www.jsonschemavalidator.net/ (JSON Schema Draft 4) で動作します。私には正しいと思いますが、これが合法であることを示す文書は見つかりません。

"value": { 
      "type": "object",
      "items": ...
}

これは本当に合法ですか?

4

1 に答える 1

1

お探しの資料はこちらです。

一部の検証キーワードは、1 つ以上のプリミティブ型にのみ適用されます。インスタンスのプリミティブ型を特定のキーワードで検証できない場合、このキーワードとインスタンスの検証は成功する必要があります。

概念を説明するために、このスキーマを例として取り上げます。

{
  "items": { "type": "string" },
  "maxLength": 2,
  "required": ["foo"]
}

["foo"]検証する

  • items->合格
  • maxLength-> 無視
  • required-> 無視

{ "foo": "bar" }検証する

  • items-> 無視
  • maxLength-> 無視
  • required->合格

"foo"検証しません

  • items-> 無視
  • maxLength-> 失敗
  • required-> 無視

3検証する

  • items-> 無視
  • maxLength-> 無視
  • required-> 無視

この方法でスキーマを作成することは可能ですが、1 つのスキーマ内でタイプ キーワードを混在させないことをお勧めします。anyOf代わりに使用すると、より読みやすいスキーマが得られます。

{
  "anyOf": [
    {
      "type": "string",
      "maxLength": 2
    },
    {
      "type": "array",
      "items": { "type": "string" }
    },
    {
      "type": "object",
      "required": "foo"
    }
  ]
}
于 2016-06-06T05:00:54.080 に答える