only-json-validatorJson 数据类型验证小框架

联合创作 · 2023-09-28 11:27

only-json-validator是Java校验json数据类型的一个小框架,基于fastjson做json解析。

因为在做项目时,现在Java后台接口多半在body中使用json做为数据传输,但是没找到比较想要的一款验证json数据的框架。于是自己动手写了这么一个验证json数据的小框架,希望弄帮到大家。

使用方式:

  • 示例需验验证的json字符串
{
    "name":"张三",
    "age":101,
    "email":"",
    "sex":"男",
    "head":"http://ssss",
    "index":"b",
    "roleIds":[
        1,
        2,
        6
    ],
    "roles":[
        {
            "name":"经理",
            "grade":"12"
        },
        {
            "name":"总监",
            "grade":"13"
        }
    ]
}
  • 先写配置文件,配置文件中配置验证规则,配置在json文件中
[//数组为最顶层,这样可以配置多个验证规则
    {
        "name":"001",//这个相当于命名空间或者id等,比如设置成url,通过url找到需验证请求是数据
        "validator":{
            "name":{//这个是需要验证的字段
                "validators":[//这是验证规则
                    {
                        "validator":"notBlank",//验证类型,这个表示不能为空
                        "code":"1001",//自定义错误码
                        "message":"姓名不能为空"//自定义错误提示
                    },
                    {
                        "validator":"minLength",
                        "value":5
                    },
                    {
                        "validator":"maxLength",
                        "value":128
                    }
                ]
            },
            "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":{//这个表示node字段是个对象属性,其还有许多属性,然后下面的配置可以无限循环嵌套
                    "validators":[
                        {
                            "validator":"notNull"
                        },
                        {
                            "validator":"integer"
                        }
                    ]
                }
            },
            "roles":{
                "validators":[
                    {
                        "validator":"array"
                    }
                ],
                "nodes":{//这个表示node字段是个对象属性,其还有许多属性,然后下面的配置可以无限循环嵌套
                    "name":{
                       "validators":[
                             {
                                "validator":"notBlank"
                             },
                             {
                               "validator":"maxLength",
                               "value":128
                            }
                        ]
                    }
                }
            }

        }
    },
    {
        "name":"002",
        "validator":{

        }
    }
]
  • Java代码读取配置文件然后验证json

//需要验证的json,这里简单写了,如上面示例
String json = "{\"name\":\"\"}";
//读取配置文件,初始化验证类
ValidatorService vs = new ValidatorService("classpath*:/validator/*.json");
//按命名去验证json内容是否合法,返回空列表则合法,非空则有不合法数据
List<ValidatorResult> list = vs.validate(json, "001");
  • 目前支持验证类型
[
	{
		"validator": "array"
	},
	{
		"validator": "boolean"
	},
	{
		"validator": "email"
	},
	{
		"validator": "equalsTo",
		"value": "user.password"
	},
	{
		"validator": "inStringArray",
		"value": [
			"1",
			"2",
			"3"
		]
	},
	{
		"validator": "integer"
	},
	{
		"validator": "maxLength",
		"value": "50"
	},
	{
		"validator": "max",
		"value": "50.5"
	},
	{
		"validator": "minLength",
		"value": "20"
	},
	{
		"validator": "min",
		"value": "20.0"
	},
	{
		"validator": "notBlank"
	},
	{
		"validator": "notNull"
	},
	{
		"validator": "number"
	},
	{
		"validator": "regex",
		"value": "",
		"message": ""
	},
	{
		"validator": "url"
	}
]
  • Maven坐标
<dependency>
    <groupId>com.onlyxiahui.framework</groupId>
    <artifactId>only-json-validator</artifactId>
    <version>1.0.0</version>
</dependency>

 

浏览 1
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报