{ 'a': 343, 'b': 434 }
如果我有一个像上面这样的json数据,属性'a'和'b'实际上是用户提供的名称,那么它可以是任何字符串。如何创建一个json-schema来验证这个?
答案 0 :(得分:2)
如果您使用的验证库基于relatively recent version of the JSON Schema,则应该能够使用patternProperties来验证具有用户定义键的属性。
以下是使用javascript库tv4执行验证的快速示例:
var schema = {
"patternProperties": {
"^[a-zA-Z0-9]+$": {
"title": "someUserDefinedPropertyName",
"type": "number"
}
}
};
var valid = { "a": 1234, "b": 5678 };
var invalid = { "a": "1234", "b": 5678 };
alert("Validates? [should be true]: " + tv4.validate(valid, schema));
alert("Validates? [should be false]: " + tv4.validate(invalid, schema));
alert('Variable invalid, error at data path: ' + tv4.error.dataPath + '\n\nError Description:\n' + tv4.error.message);
有关详细信息,我建议您阅读上面链接的Schema部分,并查看advanced examples on json-schema.org。