2015-03-25 70 views
2

在属性定义中,我需要允许数值或空字符串值,这个表达式是否适合此目的?JSON模式:如何让数字类型的属性为空字符串?

"tprice":{"type":["number",{"enum":[""]}]} 

库,即我使用验证数据(Jsv4)为空字符串生成错误:

Invalid type: string 

而我尝试设置零长度字符串该属性。

回答

4

我认为你的解决方案是在模式中使用anyOf。 这是为你工作模式:

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "properties": { 
     "tprice": { 
      "anyOf": [ 
      { 
       "type": "number" 
      }, 
      { 
       "type": "string", 
       "maxLength": 0 
      } 
     ] 
    } 
    } 
} 

我用jsonschemalint.com进行测试。

{ 
    "tprice": 123 
} 

{ 
    "tprice": "" 
} 

验证就好了。

+0

谢谢,我的表达式适用于draft3,我的验证器是draft4,我的数据是php $ _POST数组,我认为我应该使用带字符串的“string”类型。 – vitus 2015-03-26 10:40:49

+0

@vitus我想我不明白你......是否为你工作? – stefankmitph 2015-03-26 11:01:46

相关问题