我想使用 Json 架构来验证 restful 网络服务上的一些传入 Json。但是我在架构的类型属性中使用多个 $ref 时遇到问题。
我需要能够做到这一点:
"type" : [ {"$ref" : "#myObjectRef"}, {"$ref" : "#otherRef"} ]
即该对象必须符合引用的模式之一。
但是当我使用 JsonSchema.Parse 通过 Json.Net 运行它时,我收到以下错误: “异常 JSON 架构类型字符串标记,得到数组”
我在尝试 this Json Schema 时遇到完全相同的错误来自 TinCan Api 的声明通过 Json.Net 验证器。但是 json 模式根据 JsonSchema Lint 进行验证.
Json.Net 如何处理架构中的多个类型选项?是否有替代的 .net 库可以执行此验证?
最佳答案
JSON Schema 中的type
字段必须是字符串或唯一字符串数组。这些字符串可以是任何 JSON 原语。
- 数组
- bool 值
- 整数
- 人数
- 无
- 对象
- 字符串
您需要的是 oneOf
字段。
{
"oneOf": [{"$ref": "#myObjectRef"}, {"$ref": "#otherRef"}]
}
此模式强制对象必须符合引用的两个模式中的一个(且仅一个)。如果同时匹配两个模式也有效,您可以改用 anyOf
。
引用资料
关于.net - 如何验证 JsonSchema 类型属性中的多个 $ref,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255622/