# only-json-validator
**Repository Path**: moxiaoyu1125/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**: 2019-07-04
- **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等
"validator":{
"array":{//这个是需要验证的字段
"validators":[//这是验证规则
{
"validator":"array"//只是表示这个字段为数组
}
]
},
"boolean":{
"validators":[
{
"validator":"boolean"
}
]
},
"email":{
"validators":[
{
"validator":"email"
}
]
},
"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"
}
]
},
"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"
}
]
}
},
"node":{
"validators":[
{
"validator":"notNull"
}
],
"nodes":{//这个表示node字段是个对象属性,其还有许多属性,然后下面的配置可以无限循环嵌套
"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":{
"user":{
"validators":[
{
"validator":"notNull"
}
],
"nodes":{
"department":{
"nodes":{
"id":{
"validators":[
{
"validator":"notNull"
}
]
}
}
}
}
},
"role":{
"validators":[
{
"validator":"notNull",
"message":"不能为空!"
}
]
},
"content":{
"validators":[
{
"validator":"notNull"
}
],
"nodes":{
"sections":{
"validators":[
{
"validator":"notNull"
},
{
"validator":"array"
}
],
"nodes":{
"items":{
"validators":[
{
"validator":"notNull"
},
{
"validator":"array"
}
],
"nodes":{
"type":{
"validators":[
{
"validator":"notNull"
}
]
},
"value":{
"validators":[
{
"validator":"notBlank"
}
]
}
}
}
}
}
}
}
}
}
]
/**
* --需要校验的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");
```