JSON模式:如何为数字类型的属性允许空字符串?

vit*_*tus 4 php json jsonschema

在属性定义中我需要允许数字或空字符串值,这个表达式是否适用于此目的?

"tprice":{"type":["number",{"enum":[""]}]}
Run Code Online (Sandbox Code Playgroud)

我用来验证数据的库(Jsv4)会为空字符串生成错误:

Invalid type: string
Run Code Online (Sandbox Code Playgroud)

而我试图为这个属性设置零长度字符串.

ste*_*tph 8

我认为您的解决方案是anyOf在架构中使用.这是适合您的架构:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "properties": {
      "tprice": {
          "anyOf": [ 
          { 
              "type": "number"
          }, 
          { 
              "type": "string", 
              "maxLength": 0
          } 
       ] 
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

我用过jsonschemalint.com来测试它.

{
   "tprice": 123
}
Run Code Online (Sandbox Code Playgroud)

{
   "tprice": ""
}
Run Code Online (Sandbox Code Playgroud)

验证就好了.