我想使用Json Schema在一个宁静的Web服务上验证一些传入的Json。但是我在模式的type属性中使用多个$ ref时遇到了问题。
我需要能够做到这一点:
"type" : [ {"$ref" : "#myObjectRef"}, {"$ref" : "#otherRef"} ]
即。该对象必须符合引用的其中一个模式。
但是当我使用JsonSchema.Parse通过Json.Net运行时,我收到以下错误: “Exception JSON模式类型字符串标记,得到数组”
从this Json Schema通过Json.Net验证程序尝试TinCan Api语句时,我得到了完全相同的错误。但是json模式验证了JsonSchema Lint。
Json.Net如何处理模式中的多个类型选项?是否有替代的.net库可以进行此验证?
答案 0 :(得分:3)
JSON模式中的type
字段必须是字符串或唯一字符串数组。这些字符串可以是任何JSON原语。
您需要的是oneOf
字段。
{
"oneOf": [{"$ref": "#myObjectRef"}, {"$ref": "#otherRef"}]
}
此模式强制该对象必须符合所引用的两个模式中的一个(且仅一个)。如果匹配两个模式也有效,则可以改为使用anyOf
。
参考