2017-03-01 14 views
1

トピックはかなり混乱していますね。Standard-JsonSchemaはStandard-JsonSchemaに準拠していません

"JsonSchema-Validation"については、「Json-schema.org/schema#」の下に標準のJsonSchemaがあり、他のJsonSchemasの許可された構造を定義する必要があります。 "json-schema.org/schema#"のこの標準JsonSchemaはJsonFile自体(他のJsonSchemaと同じように)であり、JsonSchemaです。

今私自身の混乱の点: この特定の標準JsonSchemaをそれ自身に対して検証すると、JsonNodes/JsonObject-PropertyKeys "additionalProperties"の周辺でエラーが発生します。

「json-schema.org/example2.html」で説明したように、PropertyKeysの「additionalProperties」はPropertyKeysの「プロパティ」と同じレベルにする必要があります。 しかし、標準のJsonSchemaではそうではありません。それらはPropertykeyの "properties"に含まれるJsonObjectの内部にあります。

何が間違っていますか?

第二の問題: "#" 意味: 参照エントリ "$ refは、" 何が? どの定義エントリが参照していますか? 通常の参照入力は次のようになります。 "$ ref": "#/ definitions/positiveInteger"

何か助けていただければ幸いです。種類と

が についてHuDeanY

答えて

2

は、物事はもう少し明確にするためにビットをスキーマを打破するのをしてみましょう。私があなたを正しく理解していれば、これはあなたを引き上げる部分です。

{ 
    ... 
    "properties": { 
    ... 
    "properties": { 
     "type": "object", 
     "additionalProperties": { "$ref": "#" }, 
     "default": {} 
    }, 
    ... 
    }, 
} 

第2の「プロパティ」はキーワードではなく、プロパティ名であることに気づく必要があります。これはpropertiesキーワードを定義するメタ・スキーマです。したがって、propertiesキーワードの中にadditionalPropertiesというキーワードがネストされているとは限りません。


"#"はドキュメントのルートを表します。だから、{ "$ref": "#" }は再帰的な参照です。つまり、「#」はメタ・スキーマ全体への参照です。上記のスキーマセグメントは、値がスキーマのオブジェクトとしてpropertiesキーワードをオブジェクトとして定義します。


最後に、私は、任意の適切に機能してバリデータが正常にメタスキーマに対する(メタスキーマ自体を含む)任意の有効なスキーマを検証することを保証することができます。そうでない場合は、バリデータのバグであり、使用しているバリデーションライブラリのメンテナに報告する必要があります。

関連する問題