json schema如何验证混合属性?

时间:2013-07-02 02:32:42

标签: json validation jsonschema

{ 'a': 343, 'b': 434 }

如果我有一个像上面这样的json数据,属性'a'和'b'实际上是用户提供的名称,那么它可以是任何字符串。如何创建一个json-schema来验证这个?

1 个答案:

答案 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