2
My JSONデータモデルには、1つまたはnoneのみが存在する可能性のあるプロパティセットと、独自の制約を持つ他のプロパティが存在するオブジェクトがあります。 this exampleのように繰り返しなくてもこれを行う方法はありますか?JSONスキーマのプロパティセットの1つまたは全くなし
以下は、Node.js + ajvを使用してこれを実現した簡単な例です。
var Ajv = require('ajv'),
ajv = new Ajv();
var schema = {
type: 'object',
properties: {
id: {type: 'string'},
a: {type: 'integer'},
b: {type: 'integer'}
},
required: ['id'],
oneOf: [
{required: ['a']},
{required: ['b']}
],
additionalProperties: false
};
// invalid
var json1 = {
id: 'someID',
a: 1,
b: 3
};
// valid
var json2 = {
id: 'someID',
b: 3
};
// valid
var json3 = {
id: 'someID',
a: 1
};
// valid
var json4 = {
id: 'someID'
};
var validate = ajv.compile(schema);
console.log(validate(json1)); // false
console.log(validate(json2)); // true
console.log(validate(json3)); // true
console.log(validate(json4)); // false
ありがとうございました。依存関係を使用するのは、2番目の例のように、必要なものを使用せずに必要なものです。例えば "a":{"not":["b"]} "b":{"not":["a}]} – Severin
実際には、キーワードの値はオブジェクトでなければならないため、実際には機能しませんでした。どのように私は、依存関係を使用して "a 'が存在する場合、' b 'は存在することはできません。逆の場合も同様です。 – Severin
解決しようとしていることがわかりません。私が与えた両方のスキーマは、与えられた通り正しく動作します。私は正確にあなたのために働いていないものについて、より多くの情報が必要です。 – Jason