.net - 如何验证 JsonSchema 类型属性中的多个 $ref

标签 .net json.net jsonschema

我想使用 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/

相关文章:

javascript - 将 json 模式转换为 Angular 树控制树模型

c# - 使用 Newtonsoft.Json.Schema 有没有办法拦截 "definitions"名称的生成?

c# - 手动发布 ClickOnce

.net - 如何保留剪贴板的内容

c# - 如何将 JValue 转换为 bool?

c# - 如何访问 JSON 字符串中的嵌套对象

json - 带有对象列表的 OpenAPI 查询字符串参数

c# - 在 Dynamic CRM Online 中使用 SpreadsheetGear 2012 库

c# - 终止任务的正确方法是什么?

c# - 如何将 JSON 包装的集合属性反序列化为泛型类?