私はjson-schemaを使用しており、このファイルで宣言されたプロパティのみが検証に合格することを許可したいと考えています。たとえば、ユーザーがjsonオブジェクトで「name」プロパティを渡すと、「name」がプロパティとしてここにリストされていないため、このスキーマに失敗します。
リストされたプロパティのみを通過させる「必須」に類似した機能はありますか?
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Accounting Resource - Add Item",
"type": "object",
"properties": {
"itemNumber": {
"type":"string",
"minimum": 3
},
"title": {
"type":"string",
"minimum": 5
},
"description": {
"type":"string",
"minimum": 5
}
},
"required": [
"itemNumber",
"title",
"description"
]
}
これを達成するために必要なことは、additionalProperties
をfalseに設定することです。仕様を参照してください here
参考までに、標準のv5では "unknown property" 検証モードが記述されているようです。
したがって、この要件をフォーマットの一部にする(Chris Pitmanがコメントで述べているように、将来の拡張性を損なう)代わりに、validatorに指示するだけです不明なプロパティにエラーとしてフラグを立てます。したがって、これは開発者にとって便利な非常に厳密な検証モードのようなものです。
一部のバリデーターはすでにこれをサポートしています(例 tv4 ):
var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties);
このツールでは、データに循環参照がある場合はcheckRecursive
を使用する必要があり、banUnknownProperties
はexactlyを実行します"additionalProperties":false
を使用せずに必要な場合。