如何在JsonSchema类型属性中验证多个$ ref

时间:2014-01-21 10:36:25

标签: .net json.net jsonschema

我想使用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库可以进行此验证?

1 个答案:

答案 0 :(得分:3)

JSON模式中的type字段必须是字符串或唯一字符串数组。这些字符串可以是任何JSON原语。

  • 阵列
  • 布尔
  • 整数
  • 物体
  • 字符串

您需要的是oneOf字段。

{
    "oneOf": [{"$ref": "#myObjectRef"}, {"$ref": "#otherRef"}]
}

此模式强制该对象必须符合所引用的两个模式中的一个(且仅一个)。如果匹配两个模式也有效,则可以改为使用anyOf

参考