1.0.5 • Published 10 years ago

jsonchk v1.0.5

Weekly downloads
-
License
-
Repository
-
Last release
10 years ago

JSON Struct Checker (for NodeJS)

1. 说明

这是一个对JSON数据(或其他JS对象)的数据结构进行校验的函数。 在编程过程中,可以通过编写一个JSON结构的Schema,来表示你所预期的数据结构,然后使用该函数对目标进行检查。 函数会返回Boolean类型的检查结果;如果检查未通过,函数会形成一个Array结构的日志文件供调试审阅。

用于Web的Repo: https://github.com/imnull/json-struct-checker

2. 安装

npm install jsonchk

npm上的项目地址:https://npmjs.org/package/jsonchk

3. 示例

示例代码请参看:https://github.com/imnull/jsonchk/blob/master/test.js

3.1 类型判断

3.1.1 类型字符串比对

//数据中应具备一个名为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] };

3.1.2 类型字符串的正则比对

//值类型为string或Array
var schema = { name : '/^(string|\[object Array\])$/' };
var data1 = { name : 'MK' };
var data2 = { name : ['MK'] };

3.2 函数对值的判断

var schema = {
  age : function(val){
    return typeof(val) == 'number' && val >= 0 && val <= 120;
  }
};

var data1 = { age : 24 };
var data2 = { age : -1 };

3.3 嵌套判断

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 : {
      //...
    }
  }
}

4. 特殊字符

4.1 特殊类型字符

4.1.1 "*" 允许所有类型

var schema = { style : '*' };
var data1 = { style : "width:20px" };
var data2 = { style : { width : '20px' } }
var data3 = {};

4.2 特殊引用字符

4.2.1 "@" 引用父级schema进行检测

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
  }
}

5. 关于log参数

该参数为外部引用变量,类型为数组。如果代入该引用,那么当检查出现错误时,会向此参数推入一条记录。一条记录为一个数组,按顺序为: namespace, error-type, error-description, current-checker, current-value

6. 关于namespace参数

表述出错时的层级关系

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago