这是一个对JSON数据(或其他JS对象)的数据结构进行校验的函数。 在编程过程中,可以通过编写一个JSON结构的Schema,来表示你所预期的数据结构,然后使用该函数对目标进行检查。 函数会返回Boolean类型的检查结果;如果检查未通过,函数会形成一个Array结构的日志文件供调试审阅。
用于Web的Repo: https://github.com/imnull/json-struct-checker
npm install jsonchk
npm上的项目地址:https://npmjs.org/package/jsonchk
示例代码请参看:https://github.com/imnull/jsonchk/blob/master/test.js
//数据中应具备一个名为name,值的typeof为string的属性
var schema = { name : 'string' };
var data = { name : 'MK' };
//数据中应具备一个名为days,Object.prototype.toString回调其值为[object Array]的属性
var schema = { days : '[object Array]' };
var data = { days : [1,2,3] };
//值类型为string或Array
var schema = { name : '/^(string|\[object Array\])$/' };
var data1 = { name : 'MK' };
var data2 = { name : ['MK'] };
var schema = {
age : function(val){
return typeof(val) == 'number' && val >= 0 && val <= 120;
}
};
var data1 = { age : 24 };
var data2 = { age : -1 };
var schema = {
child : {
name : 'string',
age : 'number',
wife : '^(undefined|\[object Object\])$'
}
}
var data1 = {
child : {
name : 'Even',
age : 6
}
}
var data2 = {
child : {
name : 'John',
age : 55,
wife : {
//...
}
}
}
var schema = { style : '*' };
var data1 = { style : "width:20px" };
var data2 = { style : { width : '20px' } }
var data3 = {};
var schema = {
name : 'string',
age : 'number',
wife : '@'
}
var data1 = {
name : 'John',
age : 55
}
var data2 = {
name : 'Li Lei',
age : 24,
wife : {
name : 'Han Meimei',
age : 23
}
}
该参数为外部引用变量,类型为数组。如果代入该引用,那么当检查出现错误时,会向此参数推入一条记录。一条记录为一个数组,按顺序为: namespace, error-type, error-description, current-checker, current-value
表述出错时的层级关系