指定值可以是字符串,也可以是带有json模式的null


73

希望这对其他人来说并不明显,因为我发现http://json-schema.org/上的文档缺少更详细的信息。我正在获取带有一些可以为null或字符串的属性的json块。如何在json模式(由json.NET的JsonSchema.Parse方法解析)中指定值可以为null还是字符串类型?

是否缺少一些简单的东西,例如为该类型提供数组?例如;

  "member_region": { "type": [ "string", null ] } // this throws an exception

另外,有没有人比json-schema.org有更好的json模式详细信息来源?在哪里可以找到更多示例?我不想阅读大量文档/规范来找到可以在10行示例中轻松演示的内容。

Answers:


103

来自http://json-schema.org/latest/json-schema-validation.html#anchor79

此关键字的值必须是字符串或数组。如果它是一个数组,则数组的元素必须是字符串,并且必须是唯一的。

字符串值必须是核心规范定义的七个基本类型之一。

然后我们引用类型:http : //json-schema.org/latest/json-schema-core.html#anchor8

它列出了字符串和null。尝试:

"member_region": { "type": ["string", "null"] }

2
"string, null"不起作用,但是起作用[ "string", "null" ]
安德鲁·阿诺特

1
好像有人在一年前更改了此答案。我将其更改回正确的答案。
杰森·德罗斯

61

如果您采用数组语法,那么扩展爆炸药就可以回答:

"member_region": { "type": [ "string", "null" ] } // this works

因为您说的是类型,而不是示例/值。您不应该去:

 "member_region": { "type": [ "string", null ] } // this throws an exception

2
这是唯一适用于Azure Logic Apps架构的解决方案。
EricksonG

4
Visual Studio Code也可以识别此解决方案。
ivosh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.