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

如果我有一个像上面这样的 json 数据,并且属性“a”和“b”实际上是用户给出的名称,那么它可以是任何字符串。如何创建一个 json 模式来验证这一点?

4

1 回答 1

2

如果您使用的验证库基于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 部分,以及查看json-schema.org 上的高级示例

于 2013-07-02T06:21:34.810 回答