2017-03-23 18 views
-1

ベンダーが私にjsonスキーマを送信します。「プロパティ」キーワードのないJSONスキーマ

{ 
    "$schema" : "http://json-schema.org/draft-04/schema#", 
    "type" : "object", 
    "definitions" : { 
    ... 
    }, 
    "oneOf" : [{ 
     "$ref" : "#/definitions/commons/strings/text" 
    }, { 
     "$ref" : "#/definitions/dto/scriptStep" 
    }, { 
     "$ref" : "#/definitions/dto/callResult" 
    } 
    ] 
} 

「プロパティ」というキーワードはありません(ところで、非常に大きな「定義」部分があります)。スキーマが空のjsonオブジェクト{}を実際にdescibesすることを意味しますか?あるいは、jsonが "oneOf"配列の要素の1つを含むことができるということですか?

答えて

2

すべてのJSONスキーマキーワードは制約です。たとえば、空のスキーマ{}は、任意のJSONが有効であることを意味します。 `{" type ":" object "}のスキーマは、任意のJSONオブジェクトが有効であることを意味します。オブジェクトにはどのようなプロパティがあるかについての制約はありません。

ただし、これはベンダーがこのスキーマで表現しているものではありません。 JSONは"type": "object"に対してだけでなく、oneOfで参照されている3つのスキーマの1つに対しても有効である必要があります。おそらく、これらのスキーマにはpropertiesキーワードが含まれていると思われます。

これはおそらく、設計されたスキーマではありませんが、有効です。

関連する問題