js下的数据结构定义工具
- 在开发中,经常遇到数据校验,需要一个简单的,精准,优雅的数据校验库对一些数据进行校验。
- 场景如下:
- 配置文件校验, 尤其是多层次复杂object结构。
- 与他人对接的数据校验
- 接口参数的校验
- 格式化出一个符合要求的数据结构
- and so on...
您可以使用Struct.type 查看内置的数据类型.
已有的数据类型
- enum
- string
- number
- int
- bool
- array
- jsonString
- 也可以使用Struct.define(name, function(){})自定义.
var s = new Struct({
code: Struct.type.enum(1,2).default(1),
deep: {
msg: Struct.type.string.default('默认值')
}
});
s.validate({code: 2}); //false, deep.msg: The parameter must be a string
// 如上定义了一个object结构。 code只允许1或者2, msg必须是string。
s.formatData({}); // {code: 1, deep: {msg: '默认值'}} 根据数据结构返回默认数据结构, 若未设置default则该位置返回undefined.
你可能希望将结构分别定义,然后组装起来。
var s1 = new Struct({
code: Struct.type.enum(1).default(1)
});
var b = new Struct({
parent: Struct.type.int.default(0), ss: s1
});
b.formatData(); // {parent: 0, ss: {code: 1}}
我想固定一个值, 比如固定statuExplain 为 {'statuExplain': '0关闭, 1打开'}。
直接写上你希望的结果就可以了。
你可以借用这种形式来作为数据结构的代码注释。
var a = new Struct({
statu: Struct.type.enum(0, 1).default(0),
'statuExplain': '0关闭, 1打开'
});
a.formatData(); // {statu: 0, 'statuExplain': '0关闭, 1打开'}
如果你传的值符合定义的结构,就会被保留下来。