validator

package
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2026 License: Apache-2.0 Imports: 19 Imported by: 2

Documentation

Overview

* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-25 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-25 00:00:00 * @FilePath: \go-toolbox\pkg\validator\format.go * @Description: 格式验证函数 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-25 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-25 00:00:00 * @FilePath: \go-toolbox\pkg\validator\helpers.go * @Description: 验证器通用辅助函数 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-23 00:00:00 * @FilePath: \go-toolbox\pkg\validator\http.go * @Description: HTTP 相关验证(状态码、Header 等) * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-02-19 10:25:55 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-02-19 10:25:55 * @FilePath: \go-toolbox\pkg\validator\ip.go * @Description: IP地址验证器 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-23 00:00:00 * @FilePath: \go-toolbox\pkg\validator\json.go * @Description: JSON 验证和 JSONPath 支持 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-23 00:00:00 * @FilePath: \go-toolbox\pkg\validator\number.go * @Description: 数值比较验证 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-23 22:10:16 * @FilePath: \go-toolbox\pkg\validator\operator.go * @Description: 比较操作符定义和结果类型 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-03-18 16:35:27 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-03-18 16:35:27 * @FilePath: \go-toolbox\pkg\validator\path.go * @Description: 路径匹配和验证功能 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-23 00:00:00 * @FilePath: \go-toolbox\pkg\validator\regex.go * @Description: 正则表达式验证 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-25 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-25 00:00:00 * @FilePath: \go-toolbox\pkg\validator\schema.go * @Description: JSON Schema 验证 - 高性能嵌套验证 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-23 00:00:00 * @FilePath: \go-toolbox\pkg\validator\string.go * @Description: 字符串比较和验证 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckEmptyTimePointer added in v0.11.86

func CheckEmptyTimePointer(v reflect.Value) (isEmpty bool, handled bool)

CheckEmptyTimePointer 检查指针类型的时间是否为空

func CheckEmptyTimeStruct added in v0.11.86

func CheckEmptyTimeStruct(v reflect.Value) (isEmpty bool, handled bool)

CheckEmptyTimeStruct 检查结构体类型的时间是否为空

func CheckEmptyWrapperPointer added in v0.12.0

func CheckEmptyWrapperPointer(v reflect.Value) (isEmpty bool, handled bool)

CheckEmptyWrapperPointer 检查 protobuf wrapper 类型是否为空

func ClearRegexCache added in v0.11.87

func ClearRegexCache()

ClearRegexCache 清空正则缓存(用于测试或内存释放)

func ContainsChinese

func ContainsChinese(s string) bool

ContainsChinese checks if a string contains any Chinese characters.

func DerefValue added in v0.12.0

func DerefValue(value interface{}) (interface{}, bool)

DerefValue 解引用 interface{} 中的指针,返回底层值 Deprecated: 请使用 types.DerefValue 替代

func EmptyToDefault

func EmptyToDefault(str string, defaultStr string) string

EmptyToDefault returns defaultStr if str is empty; otherwise, returns str.

func FormatSchemaError added in v0.11.87

func FormatSchemaError(result CompareResult) string

FormatSchemaError 格式化 Schema 验证错误信息

func GetCompiledRegex added in v0.11.87

func GetCompiledRegex(pattern string) (*regexp.Regexp, error)

GetCompiledRegex 获取编译的正则(带缓存)- 公共函数供其他模块使用

func HasEmpty

func HasEmpty(elems []interface{}) (bool, int)

HasEmpty checks if any element in the slice is empty.

func IfNullOrUndefined added in v0.11.87

func IfNullOrUndefined(str string) bool

IfNullOrUndefined returns trueVal if str is "null" or "undefined"; otherwise, returns falseVal.

func IsAllEmpty

func IsAllEmpty(elems []interface{}) bool

IsAllEmpty checks if all elements in the slice are empty.

func IsAllowedField added in v0.11.87

func IsAllowedField(field string, allowedFields ...[]string) bool

IsAllowedField 检查字段是否在白名单中 如果提供了白名单,检查字段是否在白名单中;否则验证字段名是否安全 参数:

  • field: 要检查的字段名
  • allowedFields: 可选的白名单切片(可变参数,传入一个[]string切片)

返回:

  • true: 字段允许使用
  • false: 字段不允许使用

func IsCEmpty added in v0.11.59

func IsCEmpty[T comparable](v T) bool

IsCEmpty 判断元素是否为类型零值 Deprecated: 请使用 types.IsCEmpty 替代

func IsEmptyAfterDeref added in v0.12.0

func IsEmptyAfterDeref(value interface{}) (interface{}, bool)

IsEmptyAfterDeref 判断值是否为空(用于过滤条件场景) 支持自动解引用指针:nil 指针为空,非 nil 指针检查其底层值 内部复用 IsEmptyValue 进行统一的空值判断 返回解引用后的值和是否为空的标志,避免调用方重复调用 DerefValue

适用场景: SQL 构建器中的 IfNotEmpty 系列方法

func IsEmptyPointer added in v0.11.86

func IsEmptyPointer(v reflect.Value) bool

IsEmptyPointer 检查指针或接口类型是否为空

func IsEmptyStruct added in v0.11.86

func IsEmptyStruct(v reflect.Value) bool

IsEmptyStruct 检查结构体是否为空

func IsEmptyValue

func IsEmptyValue(v reflect.Value) bool

isEmptyValue checks if a reflect.Value is empty.

func IsFuncType added in v0.11.59

func IsFuncType[T any]() bool

IsFuncType 判断传入的类型是否为函数类型 Deprecated: 请使用 types.IsFuncType 替代

func IsIPAllowed added in v0.11.48

func IsIPAllowed(ip string, cidrList []string) bool

IsIPAllowed 检查 IP 是否在允许列表中 支持: - 空列表:返回 true(允许所有) - 通配符 "*":返回 true(允许所有) - 精确匹配:如 "192.168.1.100" - CIDR 格式:如 "192.168.1.0/24" - IPv6 支持

func IsIPBlocked added in v0.11.87

func IsIPBlocked(ip string, blacklist []string) bool

IsIPBlocked 检查 IP 是否在黑名单中 支持: - 空列表:返回 false(不阻止) - 通配符 "*":返回 true(阻止所有) - 精确匹配:如 "192.168.1.100" - CIDR 格式:如 "192.168.1.0/24" - IPv6 支持

func IsIPInRange added in v0.11.87

func IsIPInRange(ip, start, end net.IP) bool

IsIPInRange 检查 IP 是否在指定范围内

func IsJSONNull added in v0.12.0

func IsJSONNull(data []byte) bool

IsJSONNull 判断字节数据去除空白后是否为 JSON null

func IsNil added in v0.11.37

func IsNil(x interface{}) bool

IsNil 判断传入的接口值是否为 nil Deprecated: 请使用 types.IsNil 替代

func IsNull added in v0.11.87

func IsNull(str string) bool

IsNull checks if a string is "null" (case insensitive).

func IsPrivateIP added in v0.11.87

func IsPrivateIP(ip string) bool

IsPrivateIP 检查是否是私有IP地址

func IsProtobufTimestampEmpty added in v0.11.86

func IsProtobufTimestampEmpty(v reflect.Value) bool

IsProtobufTimestampEmpty 检查 protobuf Timestamp 是否为空(使用反射避免复制锁)

func IsSafeFieldName added in v0.11.87

func IsSafeFieldName(field string) bool

IsSafeFieldName 检查字段名是否安全(仅包含字母、数字、下划线、点号) 用于防止 SQL 注入等安全问题

func IsTimeEmpty added in v0.11.86

func IsTimeEmpty(t *time.Time) bool

IsTimeEmpty 检查 time.Time 是否为空 空的定义:零值、Unix 零点或之前的时间

func IsTimeValid added in v0.12.0

func IsTimeValid(timeVal interface{}) bool

IsTimeValid 检查时间值是否有效(非nil且非零值) 支持 time.Time 和 *time.Time 类型 其他类型始终返回 true(视为有效) 适用场景: SQL 构建器中时间范围过滤条件的有效性判断

func IsUndefined

func IsUndefined(str string) bool

IsUndefined checks if a string is "undefined" (case insensitive).

func MatchIPInList added in v0.11.87

func MatchIPInList(ip string, ipList []string) bool

MatchIPInList 检查 IP 是否匹配列表中的任一规则 支持多种格式: 1. 分隔符列表: 支持分号、逗号、换行符、空格分隔

  • "192.168.0.10;192.168.0.1"
  • "192.168.0.1,192.168.0.56"
  • "192.168.0.15\n192.168.0.1"
  • "192.168.0.15 192.168.0.17"

2. 精确匹配: "192.168.1.100" 3. CIDR: "192.168.1.0/24" 4. IP范围: "172.16.0.1-172.16.0.10" 5. 通配符: "192.168.2.*" 或 "192.168.*.*"

func MatchIPPattern added in v0.11.87

func MatchIPPattern(ip, pattern string) bool

MatchIPPattern 匹配 IP 模式(支持通配符 * 和 CIDR) 返回是否匹配

func MatchIPWithWildcard added in v0.11.87

func MatchIPWithWildcard(ip, pattern string) bool

MatchIPWithWildcard 使用通配符匹配 IP

func MatchPathInList added in v0.11.87

func MatchPathInList(path string, patterns []string) bool

MatchPathInList 检查路径是否匹配列表中的任一模式

支持的匹配规则: 1. 精确匹配:path == pattern 2. 前缀匹配:path 以 pattern 开头

参数:

  • path: 待检查的路径
  • patterns: 路径模式列表

返回:如果匹配任意一个模式则返回 true

注意:如需更复杂的匹配(如 Glob、正则),请使用 matcher.PathMatcher

示例:

patterns := []string{"/api/v1", "/health"}
MatchPathInList("/api/v1/users", patterns)  // true (前缀匹配)
MatchPathInList("/health", patterns)        // true (精确匹配)
MatchPathInList("/admin", patterns)         // false

func ScanJSONString added in v0.12.0

func ScanJSONString(data []byte, start int) (int, error)

ScanJSONString 扫描 JSON 字符串,并返回字符串结束后一位的位置

func ScanJSONValueEnd added in v0.12.0

func ScanJSONValueEnd(data []byte, start int) (int, error)

ScanJSONValueEnd 扫描任意 JSON 值,并返回值结束后一位的位置

func SkipJSONSpaces added in v0.12.0

func SkipJSONSpaces(data []byte, i int) int

SkipJSONSpaces 跳过 JSON 字节流中的空白字符,并返回下一个非空白位置

func UnwrapProtobufWrapper added in v0.12.0

func UnwrapProtobufWrapper(value interface{}) (interface{}, bool)

UnwrapProtobufWrapper 解包 protobuf 包装器,返回底层值 如果值为 nil 或指向 nil 指针,则返回 (nil, true) 如果值是指针且非 nil,返回 (dereferencedValue, true) 如果值不是指针,返回 (originalValue, true)

func ValidateJSON added in v0.11.87

func ValidateJSON(data []byte) error

ValidateJSON 验证JSON结构(基础版,仅验证格式)

func ValidateJSONWithData added in v0.11.87

func ValidateJSONWithData(body []byte) (any, error)

ValidateJSONWithData 验证JSON并返回解析后的数据

Types

type CompareOperator added in v0.11.87

type CompareOperator string

CompareOperator 比较操作符

const (
	OpEqual              CompareOperator = "eq"
	OpNotEqual           CompareOperator = "ne"
	OpGreaterThan        CompareOperator = "gt"
	OpGreaterThanOrEqual CompareOperator = "gte"
	OpLessThan           CompareOperator = "lt"
	OpLessThanOrEqual    CompareOperator = "lte"
	OpContains           CompareOperator = "contains"
	OpNotContains        CompareOperator = "not_contains"
	OpHasPrefix          CompareOperator = "has_prefix"
	OpHasSuffix          CompareOperator = "has_suffix"
	OpRegex              CompareOperator = "regex"
	OpEmpty              CompareOperator = "empty"
	OpNotEmpty           CompareOperator = "not_empty"

	// 符号别名
	OpSymbolEqual              CompareOperator = "="
	OpSymbolNotEqual           CompareOperator = "!="
	OpSymbolGreaterThan        CompareOperator = ">"
	OpSymbolGreaterThanOrEqual CompareOperator = ">="
	OpSymbolLessThan           CompareOperator = "<"
	OpSymbolLessThanOrEqual    CompareOperator = "<="
)

func (CompareOperator) String added in v0.11.87

func (op CompareOperator) String() string

String 返回操作符的字符串表示

type CompareResult added in v0.11.87

type CompareResult struct {
	Success bool   `json:"success"`
	Message string `json:"message"`
	Actual  string `json:"actual"`
	Expect  string `json:"expect"`
}

CompareResult 比较结果

func CompareNumbers added in v0.11.87

func CompareNumbers[T types.Numerical](actual, expect T, op CompareOperator) CompareResult

CompareNumbers 比较两个数值 - 使用 cmp.Compare 支持泛型比较

func CompareStrings added in v0.11.87

func CompareStrings(actual, expect string, op CompareOperator) CompareResult

CompareStrings 比较两个字符串

func ValidateBase64 added in v0.11.87

func ValidateBase64(str string) CompareResult

ValidateBase64 验证 Base64 编码

func ValidateContains added in v0.11.87

func ValidateContains(body []byte, substring string) CompareResult

ValidateContains 验证响应体包含指定字符串

func ValidateContentType added in v0.11.87

func ValidateContentType(headers map[string]string, expected string) CompareResult

ValidateContentType 验证 Content-Type

func ValidateEmail added in v0.11.87

func ValidateEmail(email string) CompareResult

ValidateEmail 验证 Email 格式

func ValidateHTTP added in v0.11.87

func ValidateHTTP(urlStr string) CompareResult

ValidateHTTP 验证 HTTP/HTTPS URL(便捷函数)

func ValidateHeader added in v0.11.87

func ValidateHeader(headers map[string]string, key, expected string, op CompareOperator) CompareResult

ValidateHeader 验证HTTP头部字段

func ValidateIP added in v0.11.87

func ValidateIP(ipStr string) CompareResult

ValidateIP 验证 IP 地址(支持 IPv4 和 IPv6)

func ValidateJSONField added in v0.11.87

func ValidateJSONField(body []byte, field string, expected any) CompareResult

ValidateJSONField 验证JSON字段值

func ValidateJSONFields added in v0.11.87

func ValidateJSONFields(body []byte, rules map[string]any) []CompareResult

ValidateJSONFields 批量验证JSON字段

func ValidateJSONPath added in v0.11.87

func ValidateJSONPath(body []byte, jsonPath string, expected any, op CompareOperator) CompareResult

ValidateJSONPath 验证JSONPath查询结果

func ValidateJSONPathExists added in v0.11.87

func ValidateJSONPathExists(body []byte, jsonPath string) CompareResult

ValidateJSONPathExists 验证JSONPath路径是否存在(不验证值)

func ValidateJSONSchema added in v0.11.87

func ValidateJSONSchema(data interface{}, schema interface{}) CompareResult

ValidateJSONSchema 验证 JSON 数据是否符合 Schema data: JSON 字符串或已解析的数据 schema: JSON Schema 定义(可以是 JSONSchema 结构体或 JSON 字符串)

返回 CompareResult,包含验证结果和详细信息

func ValidateNotContains added in v0.11.87

func ValidateNotContains(body []byte, substring string) CompareResult

ValidateNotContains 验证响应体不包含指定字符串

func ValidateProtocol added in v0.11.87

func ValidateProtocol(urlStr string, allowedProtocols ...string) CompareResult

ValidateProtocol 验证 URL 协议(支持多种协议:http, https, ws, wss, ftp, ftps 等) allowedProtocols: 允许的协议列表,为空则允许所有常见协议

func ValidateRegex added in v0.11.87

func ValidateRegex(body []byte, pattern string) CompareResult

ValidateRegex 验证响应体匹配正则表达式

func ValidateStatusCode added in v0.11.87

func ValidateStatusCode(statusCode, expected int, op CompareOperator) CompareResult

ValidateStatusCode 验证HTTP状态码 - 支持多种比较操作符

func ValidateStatusCodeRange added in v0.11.87

func ValidateStatusCodeRange(actual, min, max int) CompareResult

ValidateStatusCodeRange 验证HTTP状态码在范围内

func ValidateString added in v0.11.87

func ValidateString(actual, expect string, op CompareOperator) CompareResult

ValidateString 验证字符串(支持各种操作符)

func ValidateStructWithSchema added in v0.11.87

func ValidateStructWithSchema(structData interface{}, schema interface{}) CompareResult

ValidateStructWithSchema 验证结构体是否符合 JSON Schema

将结构体转换为 JSON 后进行 Schema 验证

func ValidateUUID added in v0.11.87

func ValidateUUID(uuidStr string) CompareResult

ValidateUUID 验证 UUID 格式(支持 UUID v1-v5)

func ValidateWebSocket added in v0.11.87

func ValidateWebSocket(urlStr string) CompareResult

ValidateWebSocket 验证 WebSocket URL(便捷函数)

type EnumValidator added in v0.12.0

type EnumValidator[T comparable] struct {
	// contains filtered or unexported fields
}

EnumValidator 枚举验证器,用于验证枚举类型的有效性 T 必须是可比较的类型 (comparable),通常是 string、int 等

使用示例:

type UserRole string
const (
    RoleAdmin    UserRole = "admin"
    RoleUser     UserRole = "user"
    RoleGuest    UserRole = "guest"
)

validator := NewEnumValidator(RoleAdmin, RoleUser, RoleGuest)
if validator.IsValid(RoleAdmin) {
    fmt.Println("Valid role")
}
Example

示例测试

// 创建用户角色验证器
roleValidator := NewEnumValidator(RoleAdmin, RoleUser, RoleGuest)

// 验证角色
if roleValidator.IsValid(RoleAdmin) {
	// 角色有效
}

// 强制验证
if err := roleValidator.MustBeValid(RoleUser); err != nil {
	// 处理错误
}

// 获取所有有效值
validRoles := roleValidator.GetValidValues()
_ = validRoles

func NewEnumValidator added in v0.12.0

func NewEnumValidator[T comparable](values ...T) *EnumValidator[T]

NewEnumValidator 创建一个新的枚举验证器 参数 values 为所有有效的枚举值

示例:

validator := NewEnumValidator("pending", "approved", "rejected")

func (*EnumValidator[T]) Add added in v0.12.0

func (v *EnumValidator[T]) Add(values ...T)

Add 添加新的有效枚举值 如果值已存在,则不会重复添加

示例:

validator.Add("new_status")
Example
validator := NewEnumValidator(RoleAdmin, RoleUser)

// 添加新的角色
validator.Add(RoleGuest)
validator.Add(UserRole("moderator"), UserRole("vip"))

func (*EnumValidator[T]) Clear added in v0.12.0

func (v *EnumValidator[T]) Clear()

Clear 清空所有有效枚举值

func (*EnumValidator[T]) Clone added in v0.12.0

func (v *EnumValidator[T]) Clone() *EnumValidator[T]

Clone 创建验证器的副本

func (*EnumValidator[T]) Contains added in v0.12.0

func (v *EnumValidator[T]) Contains(value T) bool

Contains 检查验证器是否包含指定的枚举值 功能与 IsValid 相同,提供更语义化的方法名

func (*EnumValidator[T]) Count added in v0.12.0

func (v *EnumValidator[T]) Count() int

Count 返回有效枚举值的数量

func (*EnumValidator[T]) GetValidValues added in v0.12.0

func (v *EnumValidator[T]) GetValidValues() []T

GetValidValues 获取所有有效的枚举值列表 返回的列表顺序不固定

示例:

validValues := validator.GetValidValues()
fmt.Printf("Valid values: %v\n", validValues)

func (*EnumValidator[T]) GetValidValuesString added in v0.12.0

func (v *EnumValidator[T]) GetValidValuesString() []string

GetValidValuesString 获取所有有效枚举值的字符串表示 对于 string 类型的枚举特别有用,返回排序后的列表

示例:

fmt.Printf("Valid roles: %v\n", validator.GetValidValuesString())

func (*EnumValidator[T]) IsValid added in v0.12.0

func (v *EnumValidator[T]) IsValid(value T) bool

IsValid 检查给定值是否为有效的枚举值

示例:

if validator.IsValid("pending") {
    fmt.Println("Valid status")
}

func (*EnumValidator[T]) MustBeValid added in v0.12.0

func (v *EnumValidator[T]) MustBeValid(value T) error

MustBeValid 验证给定值,如果无效则返回错误

示例:

if err := validator.MustBeValid(status); err != nil {
    return err
}

func (*EnumValidator[T]) Remove added in v0.12.0

func (v *EnumValidator[T]) Remove(values ...T)

Remove 移除指定的枚举值 如果值不存在,不会产生错误

示例:

validator.Remove("deprecated_status")

type IPBase added in v0.11.87

type IPBase struct{}

IPBase IP验证器基类

func (*IPBase) ValidateIP added in v0.11.87

func (b *IPBase) ValidateIP(ip string) error

ValidateIP 验证IP地址是否有效

type JSONSchema added in v0.11.87

type JSONSchema struct {
	Type                 string                `json:"type,omitempty"`                 // string, number, integer, boolean, array, object, null
	Properties           map[string]JSONSchema `json:"properties,omitempty"`           // 对象属性定义
	Required             []string              `json:"required,omitempty"`             // 必需字段
	Items                *JSONSchema           `json:"items,omitempty"`                // 数组元素 schema
	Enum                 []interface{}         `json:"enum,omitempty"`                 // 枚举值
	Minimum              *float64              `json:"minimum,omitempty"`              // 最小值
	Maximum              *float64              `json:"maximum,omitempty"`              // 最大值
	MinLength            *int                  `json:"minLength,omitempty"`            // 最小长度
	MaxLength            *int                  `json:"maxLength,omitempty"`            // 最大长度
	Pattern              string                `json:"pattern,omitempty"`              // 正则模式
	MinItems             *int                  `json:"minItems,omitempty"`             // 数组最小元素数
	MaxItems             *int                  `json:"maxItems,omitempty"`             // 数组最大元素数
	UniqueItems          bool                  `json:"uniqueItems,omitempty"`          // 数组元素唯一性
	AdditionalProperties interface{}           `json:"additionalProperties,omitempty"` // 额外属性
}

JSONSchema JSON Schema 定义

func QuickSchema added in v0.11.87

func QuickSchema(properties map[string]string, required ...string) JSONSchema

QuickSchema 快速创建简单的对象 Schema(语法糖)

示例:

schema := QuickSchema(map[string]string{
    "name": "string",
    "age": "number",
    "email": "string",
}, "name", "email")  // name 和 email 是必需的

type SchemaBuilder added in v0.11.87

type SchemaBuilder struct {
	// contains filtered or unexported fields
}

SchemaBuilder JSON Schema 构建器(链式调用)

func NewSchemaBuilder added in v0.11.87

func NewSchemaBuilder() *SchemaBuilder

NewSchemaBuilder 创建 Schema 构建器

func (*SchemaBuilder) ArrayProperty added in v0.11.87

func (b *SchemaBuilder) ArrayProperty(name string, items JSONSchema) *SchemaBuilder

ArrayProperty 添加数组属性

func (*SchemaBuilder) Build added in v0.11.87

func (b *SchemaBuilder) Build() JSONSchema

Build 构建 Schema

func (*SchemaBuilder) BuildJSON added in v0.11.87

func (b *SchemaBuilder) BuildJSON() string

BuildJSON 构建 Schema JSON 字符串

func (*SchemaBuilder) Enum added in v0.11.87

func (b *SchemaBuilder) Enum(values ...interface{}) *SchemaBuilder

Enum 设置枚举值

func (*SchemaBuilder) NumberProperty added in v0.11.87

func (b *SchemaBuilder) NumberProperty(name string, min, max *float64) *SchemaBuilder

NumberProperty 添加数字属性

func (*SchemaBuilder) Property added in v0.11.87

func (b *SchemaBuilder) Property(name string, propSchema JSONSchema) *SchemaBuilder

Property 添加属性

func (*SchemaBuilder) Required added in v0.11.87

func (b *SchemaBuilder) Required(fields ...string) *SchemaBuilder

Required 设置必需字段

func (*SchemaBuilder) StringProperty added in v0.11.87

func (b *SchemaBuilder) StringProperty(name string, minLen, maxLen int) *SchemaBuilder

StringProperty 添加字符串属性

func (*SchemaBuilder) Type added in v0.11.87

func (b *SchemaBuilder) Type(t string) *SchemaBuilder

Type 设置类型

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL