219 lines
6.0 KiB
Go
219 lines
6.0 KiB
Go
|
package validator
|
|||
|
|
|||
|
type JsonParam struct {
|
|||
|
ErrMsg string // 检验失败输出的消息
|
|||
|
IsTypeStaticallyDefinable bool // true-类型可静态确定, false-类型不可静态确定,只能采用反射动态确定,一般为自定义类
|
|||
|
IsValidateFuncDefined bool // true-用户自定义了检验方法,false-用户未自定义检验方法
|
|||
|
TypeDesc string // 指示可静态确定类型的字符串,详见json_param_type
|
|||
|
|
|||
|
// 自定义检验方法
|
|||
|
CustomizedValidateFunc ValidateFunc
|
|||
|
|
|||
|
// 通用字段值
|
|||
|
Value any
|
|||
|
NullableValue NullableItem
|
|||
|
SliceLen int
|
|||
|
|
|||
|
// 指针域
|
|||
|
BoolPtrVal *bool
|
|||
|
IntPtrVal *int
|
|||
|
Int64PtrVal *int64
|
|||
|
Float64PtrVal *float64
|
|||
|
StringPtrVal *string
|
|||
|
|
|||
|
// 切片域
|
|||
|
BoolSliceVal []bool
|
|||
|
IntSliceVal []int
|
|||
|
Int64SliceVal []int64
|
|||
|
Float64SliceVal []float64
|
|||
|
StringSliceVal []string
|
|||
|
|
|||
|
// 切片的指针域
|
|||
|
BoolSlicePtrVal *[]bool
|
|||
|
IntSlicePtrVal *[]int
|
|||
|
Int64SlicePtrVal *[]int64
|
|||
|
Float64SlicePtrVal *[]float64
|
|||
|
StringSlicePtrVal *[]string
|
|||
|
}
|
|||
|
|
|||
|
func NewStringParam(errMsg string, value any) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "string",
|
|||
|
Value: value,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 指针
|
|||
|
func NewBoolPtrParam(errMsg string, value *bool) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*bool",
|
|||
|
BoolPtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func NewIntPtrParam(errMsg string, value *int) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*int",
|
|||
|
IntPtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewInt64PtrParam(errMsg string, value *int64) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*int64",
|
|||
|
Int64PtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewFloat64PtrParam(errMsg string, value *float64) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*float64",
|
|||
|
Float64PtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewStringPtrParam(errMsg string, value *string) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*string",
|
|||
|
StringPtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 切片
|
|||
|
func NewBoolSliceParam(errMsg string, value []bool) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "[]bool",
|
|||
|
BoolSliceVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func NewIntSliceParam(errMsg string, value []int) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "[]int",
|
|||
|
IntSliceVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewInt64SliceParam(errMsg string, value []int64) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "[]int64",
|
|||
|
Int64SliceVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewFloat64SliceParam(errMsg string, value []float64) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "[]float64",
|
|||
|
Float64SliceVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewStringSliceParam(errMsg string, value []string) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "[]string",
|
|||
|
StringSliceVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 切片的指针
|
|||
|
func NewBoolSlicePtrParam(errMsg string, value *[]bool) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*[]bool",
|
|||
|
BoolSlicePtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func NewIntSlicePtrParam(errMsg string, value *[]int) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*[]int",
|
|||
|
IntSlicePtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewInt64SlicePtrParam(errMsg string, value *[]int64) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*[]int64",
|
|||
|
Int64SlicePtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewFloat64SlicePtrParam(errMsg string, value *[]float64) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*[]float64",
|
|||
|
Float64SlicePtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewStringSlicePtrParam(errMsg string, value *[]string) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*[]string",
|
|||
|
StringSlicePtrVal: value,
|
|||
|
}
|
|||
|
}
|
|||
|
func NewTypeUnknownParam(errMsg string, value any) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: false,
|
|||
|
Value: value,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func NewStructParam(errMsg string, value NullableItem) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "struct",
|
|||
|
NullableValue: value,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func NewStructPtrParam(errMsg string, value NullableItem) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*struct",
|
|||
|
NullableValue: value,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func NewStructSliceParam(errMsg string, len int) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "[]struct",
|
|||
|
SliceLen: len,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func NewStructSlicePtrParam(errMsg string, value any) *JsonParam {
|
|||
|
return &JsonParam{
|
|||
|
ErrMsg: errMsg,
|
|||
|
IsTypeStaticallyDefinable: true,
|
|||
|
TypeDesc: "*[]struct",
|
|||
|
Value: value,
|
|||
|
}
|
|||
|
}
|