# only-json-validator
**Repository Path**: fwjok/only-json-validator
## Basic Information
- **Project Name**: only-json-validator
- **Description**: 这是一个Java用于校验jaon字符串的小框架,可以用来校验json字符串中数据是否合法等。因为希望在http请求body中json统一拦截校验,但是没找到合适的框架,所有自己写了个小框架,依赖fastjson,希望也能帮助到大家。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 11
- **Created**: 2020-05-24
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#only-json-validator
--- 这是一个用来校验json字符串的小框架
###使用方式(主要有3部分)
1、配置文件,用于配置验证规则
2、Java验证代码读取配置文件
3、需要校验的json字符串
```javascript
/**
* --配置方式,内容配置在json文件中
*
*/
[
{
"name": "001",//这个相当于命名空间或者id等,不然在web项目中可以用方法路径如 /user/add
"validator": {
"array": {//这个是需要验证的字段 可以是任意命名的,这里demo方便理解用了相应需要验证类型命名
"validators": [//这是验证规则 可以配置多个,除了非空验证,当这个字段无值或者空,是跳过验证的
{
"validator": "array"//只是表示这个字段为数组 其他的验证类型如email,boolean
}
]
},
"boolean": {
"validators": [
{
"validator": "boolean"
}
]
},
"email": {
"validators": [
{
"validator": "email"
}
],
"nodes": {
"": {
},
"nodes": {
}
}
},
"equalsTo": {
"validators": [
{
"validator": "equalsTo",
"value": "node.equalsTo"
}
]
},
"inStringArray": {
"validators": [
{
"validator": "inStringArray",
"value": [
"1",
"2",
"3",
"a",
"b",
"c"
]
}
]
},
"integer": {
"validators": [
{
"validator": "integer"
}
]
},
"maxLength": {
"validators": [
{
"validator": "maxLength",
"value": 10
}
]
},
"max": {
"validators": [
{
"validator": "max",
"value": "50.5"
}
]
},
"minLength": {
"validators": [
{
"validator": "minLength",
"value": 5
}
]
},
"min": {
"validators": [
{
"validator": "min",
"value": "20.0"
}
]
},
"notBlank": {
"validators": [
{
"validator": "notBlank"
}
]
},
"notNull": {
"validators": [
{
"validator": "notNull"
}
]
},
"notEmpty": {
"validators": [
{
"validator": "notNull"
}
]
},
"number": {
"validators": [
{
"validator": "number"
}
]
},
"regex": {
"validators": [
{
"validator": "regex",
"value": "((\\d{2}(([02468][048])|([13579][26]))[\\-]((((0?[13578])|(1[02]))[\\-]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-]((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-]((((0?[13578])|(1[02]))[\\-]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-]((0?[1-9])|(1[0-9])|(2[0-8]))))))",
"message": "日期格式不对"
}
]
},
"url": {
"validators": [
{
"validator": "url"
}
]
},
"code": {
"validators": [
{
"validator": "notBlank",
"code": "code.001",
"message": "不能为空!"
}
]
},
"roleIds": {
"validators": [
{
"validator": "array"
}
],
"nodes": {
"": {
"validators": [
{
"validator": "notNull"
},
{
"validator": "integer"
}
]
}
}
},
"nodes": {
"validators": [
{
"validator": "array"
},
{
"validator": "notNull"
}
],
"nodes": {
"": {
"validators": [
{
"validator": "array"
},
{
"validator": "notNull"
},
{
"validator": "integer"
}
],
"nodes": {
"": {
"validators": [
{
"validator": "array"
},
{
"validator": "notNull"
},
{
"validator": "integer"
}
],
"nodes": {
"name": {
"validators": [
{
"validator": "notNull"
},
{
"validator": "integer"
}
]
}
}
}
}
}
}
},
"node": {
"validators": [
{
"validator": "notNull"
}
],
"nodes": {
"array": {
"validators": [
{
"validator": "array"
}
]
},
"boolean": {
"validators": [
{
"validator": "boolean"
}
]
},
"email": {
"validators": [
{
"validator": "email"
}
]
},
"equalsTo": {
"validators": [
{
"validator": "equalsTo",
"value": "equalsTo"
}
]
},
"inStringArray": {
"validators": [
{
"validator": "inStringArray",
"value": [
"1",
"2",
"3",
"a",
"b",
"c"
]
}
]
},
"integer": {
"validators": [
{
"validator": "integer"
}
]
},
"maxLength": {
"validators": [
{
"validator": "maxLength",
"value": 10
}
]
},
"max": {
"validators": [
{
"validator": "max",
"value": "50.5"
}
]
},
"minLength": {
"validators": [
{
"validator": "minLength",
"value": 5
}
]
},
"min": {
"validators": [
{
"validator": "min",
"value": "20.0"
}
]
},
"notBlank": {
"validators": [
{
"validator": "notBlank"
}
]
},
"notNull": {
"validators": [
{
"validator": "notNull"
}
]
},
"number": {
"validators": [
{
"validator": "number"
}
]
},
"regex": {
"validators": [
{
"validator": "regex",
"value": "((\\d{2}(([02468][048])|([13579][26]))[\\-]((((0?[13578])|(1[02]))[\\-]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-]((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-]((((0?[13578])|(1[02]))[\\-]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-]((0?[1-9])|(1[0-9])|(2[0-8]))))))",
"message": "日期格式不对"
}
]
},
"url": {
"validators": [
{
"validator": "url"
}
]
},
"code": {
"validators": [
{
"validator": "notBlank",
"code": "code.001",
"message": "不能为空!"
}
]
},
"roleIds": {
"validators": [
{
"validator": "array"
}
],
"nodes": {
"": {
"validators": [
{
"validator": "notNull"
},
{
"validator": "integer"
}
]
}
}
}
}
}
}
},
{
"name": "002",
"validator": {
"name": {
"validators": [
{
"validator": "notBlank"
}
]
},
"age": {
"validators": [
{
"validator": "max",
"value": "100"
},
{
"validator": "min",
"value": "10"
}
]
},
"email": {
"validators": [
{
"validator": "email"
}
]
},
"sex": {
"validators": [
{
"validator": "notNull"
},
{
"validator": "inStringArray",
"value": [
"男",
"女",
"保密"
]
}
]
},
"head": {
"validators": [
{
"validator": "url"
}
]
},
"index": {
"validators": [
{
"validator": "number"
}
]
},
"roleIds": {
"validators": [
{
"validator": "array"
}
],
"nodes": {
"": {
"validators": [
{
"validator": "notNull"
},
{
"validator": "integer"
}
]
}
}
}
}
},
{
"name": "003",
"validator": {
"name": {
"validators": [
{
"validator": "notBlank",
"code": "10001",
"message": "姓名不能为空"
}
]
},
"roles": {
"validators": [
{
"validator": "array"
}
],
"nodes": {
"": {
"validators": [
{
"validator": "array"
}
],
"nodes": {
"name": {
"validators": [
{
"validator": "notBlank",
"code": "10001",
"message": "姓名不能为空"
}
]
}
}
}
}
}
}
}
]
/**
* --需要校验的json示例
*
*/
{
"array": "array",
"boolean": 1,
"email": "email",
"equalsTo": "node.equalsTo",
"inStringArray": "inStringArray",
"integer": "integer",
"maxLength": "1234567891011",
"max": "100",
"minLength": "1",
"min": "2",
"notBlank": "",
"notNull": null,
"number": "number",
"regex": "regex",
"url": "url",
"code": "",
"node": {
"array": "array",
"boolean": 1,
"email": "email",
"equalsTo": "equalsTo",
"inStringArray": "inStringArray",
"integer": "integer",
"maxLength": "1234567891011",
"max": "100",
"minLength": "1",
"min": "2",
"notBlank": "",
"notNull": null,
"number": "number",
"regex": "regex",
"url": "url",
"code": "",
"roleIds": [
"",
"g",
"b"
]
},
"roleIds": {
}
}
```
Java使用方式
```java
String json = "{\"name\":\"\"}";
ValidatorService vs = new ValidatorService("classpath*:/validator/*.json");
List list = vs.validate(json, "001");
```