带回调的JSON Schema解析器/验证器?

时间:2014-04-28 08:58:13

标签: javascript json validation parsing jsonschema

JavaScript中可靠的JSON Schema验证器是什么是可扩展的 - 在某种意义上,你可以在解析元素时添加功能?

4 个答案:

答案 0 :(得分:1)

JJV可让您添加custom checks

也许是这样的:

env.addCheck('cache', function (v, p) {
    if(p) { //you don't need the 'if' if you didn't want to.
        //your caching code goes here
        return true; //to make sure it doesn't invalidate the check
    }
});

json架构代码段

firstname: {
            type: 'string',
            cache: true //could be anything if you didn't want the if(p) 
        }

答案 1 :(得分:1)

查看WADL规范(http://wadl.java.net)和JSON模式规范(http://json-schema.org/examples.html)。

希望它有所帮助。

西蒙

答案 2 :(得分:1)

FieldVal支持带有结构化错误报告的同步和异步验证(browser / Node.js等)。它提供了许多常见的验证功能(即电子邮件,日期,网址等),并允许添加自定义功能。

异步验证的基本示例如下所示:

var params = {email: "email@example.com"}
var validator = new FieldVal(params);

//Email validation
validator.get_async("email", [BasicVal.email(), function(value, emit, callback) {  
    //Imitating asynchronous database call
    setTimeout(function() {
        callback({
            error: 1001,
            error_message: "Email already exists"
        })
    }, 5);
}]);

validator.end(function(error) {  
    if (error) {
        //Do something about the error
    } else {
        //Everything is valid - proceed
    }
});

阅读我们的blog post了解更多高级示例。

免责声明:我正在为该项目做出贡献。

答案 3 :(得分:0)

如果您不介意给JSON验证员JULES,我已经创建了一个https://github.com/stamat/jules并告诉我您的想法。有一种方法可以扩展JSON Schema:

jules.validator.new_keyword = function(value, keyword, schema) {
    //define your validator here
    return true;
};