4.2.2 • Published 2 years ago

jsonval v4.2.2

Weekly downloads
85
License
ISC
Repository
github
Last release
2 years ago

JSONVAL

一个json值验证工具

使用校验

通过jsonv提供的方法即可对值进行校验

import { jsonv } from 'jsonval'

const validator = jsonv.object('!', '用户信息', {
	id: jsonv.int('!', 'ID', { range: [1, null] }),
	name: jsonv.object('!', '姓名', {
		first: jsonv.string('!', '姓氏', { length: [1, 3] }),
		last: jsonv.string('!', '名字', { length: [1, 3] }),
	}),
	gender: jsonv.string('?', '性别', { values: ['男', '女'] }),
	love: jsonv.array('?', '爱好列表', jsonv.string('!', '爱好', { length: [1,5] }))
})

const result = validator({
	id: 2,
	name: { first:'张', last:'飞' },
	gender: '男'
})

console.log(result)

扩展校验规则

通过tools.regist方法即可注册自己的校验规则(如果是typescript,则还需要扩展IJSONV接口,具体操作不做描述)

校验方式扩展示例:

import {tools} from 'jsonval'

//新扩展校验
tools.regist('id', (req, name) => {
	//只需要返回一个校验函数即可
	//校验函数的参数是需要校验的值,返回值是经过校验之后应该得到的值
	return (val)=>{
		//是否必填检测
		if (tools.empty(val)) {
			if (req == '!') tools.error(name, '不能为空')
		}
		//结果处理
		else {
			val = val + ''
			if(!/^\d{1,20}$/.test(val)) tools.error(name, '不是有效ID')
		}
		return val
	}
})

//使用现有扩展进行组合
tools.regist('userName', (req, name)=>{
	return jsonv.object(req, name, {
		first: jsonv.string(req, '姓氏', { length: [1, 3] }),
		last: jsonv.string(req, '名字', { length: [1, 3] }),
	})
})

对于扩展后的校验器的使用:

import { jsonv } from 'jsonval'

const validator = jsonv.object('!', '用户信息', {
	id: jsonv.id('!', 'ID'),
	name: jsonv.userName('!', '姓名'),
	gender: jsonv.string('?', '性别', { values: ['男', '女'] }),
	love: jsonv.array('?', '爱好列表', jsonv.string('!', '爱好', { length: [1,5] }))
})

自定义错误处理

通过自定义错误处理,可以实现国际化等其他功能。

  • 通过jsonv.tools.erraction用来注册或重写错误处理程序。
  • 通过jsonv.tools.erractionof来获取已注册的错误处理程序。
  • 先在jsonvType.IJSONVERR中定义相关的错误处理程序,之后便可以使用jsonv.tools.erraction来注册。
  • 如果已经注册了错误处理程序,则不应该直接抛出异常,而是调用错误处理程序来处理。
  • 错误处理程序参数option.voption是在进行校验时通过第二个参数传递的。
4.2.2

2 years ago

4.2.1

3 years ago

4.1.13

3 years ago

4.1.12

3 years ago

4.1.10

3 years ago

4.1.11

3 years ago

4.1.9

3 years ago

4.1.8

3 years ago

4.0.9

3 years ago

4.1.7

3 years ago

4.0.8

3 years ago

4.1.4

3 years ago

4.1.3

3 years ago

4.1.6

3 years ago

4.0.10

3 years ago

4.0.7

3 years ago

4.1.5

3 years ago

4.0.6

3 years ago

4.1.2

3 years ago

4.1.1

3 years ago

3.0.6

4 years ago

3.0.4

4 years ago

3.0.2

4 years ago

3.0.0

4 years ago

2.0.7

4 years ago

2.0.6

4 years ago

2.0.4

4 years ago

1.0.2

4 years ago

2.0.2

4 years ago

1.0.1

4 years ago

1.0.5

4 years ago

2.0.1

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.0

4 years ago