/commonTools

golang tools,dnscache ,fastest jsonschema ,lrucache

Primary LanguageGo

jsonschema

  • golang 最快的jsonschema 实现。性能超越qri-io/jsonschema 10 倍+
  • 支持字段类型转化。

type 限定字段类型

取值范围:string number bool object array

{
  "type": "string"
}

或者

{
  "type": "string|number"
}

properties

当值为object 时起作用。限定object 中字段的模式,不允许出现properties 中未定义的字段

 {
  "type": "object",
  "properties": {
    "name": {
        "type": "string"
    }
  }
}

flexProperties

当值为object时起作用。限定object 中字段的模式,允许出现flexProperties 中未定义的字段

maxLength

当字段为string 或者array 类型时起作用,限定string的最大长度。(字节数)或者数组的最大长度

minLength

当字段为string 或者array 类型时起作用,限定string的最小长度。(字节数)或者数组的最小长度

maximum

当字段为数字类型时字作用,限定数字的最大值

minimum

当字段为数字类型时起作用,限定数字的最小值

enum

该值类型为数组。限定值的枚举范围

{
  "enum": ["1","2","3"]
}

required

该值类型为字符串数组,限定必须存在数组中声明的字段

{
  "required": ["username","password"]
}

pattern

当字段的值为字符串是起作用,pattern 的值是一个正则表达式,会校验字段是否和该正则匹配

{
  "type": "string",
  "pattern": "^\\d+$"
}

items

当字段的值为数组时起作用,用于校验数组中的每一个实体是否满足该items 中定义的模式

{
  "type": "array",
  "items": {
      "type": "object",
      "properties":{
        "username": {
            "type": "string"
        }   
      }     
  }
}

switch

当switch中的key的值满足case 中制定的值时,执行case中对应的校验器。如果都不满足,则执行default中的校验器

{
  "switch": "name",
   "case": {
      "name1": {
        "required": ["age1"]
      } ,
      "name2": {
          "required": ["age2"]
      } 

   },
   "default": {
      "required": ["key3"]
   }
}

if

当if 中的校验器没有任何错误时,执行then中的校验器,否则执行else中的校验器。 if中的错误不会抛出

{
 "if": {"required": "key1"},
 "then":{"required": "key2"},
 "else": {"required": "key3"}
}