使用newtonsoft.json.schema在REF属性上的访问定义



我想访问架构中的定义,以获取定义的命名。我正在使用newtonsoft.json v11.01

我正在为jsonschema构建C#转换器来制作语法并进行编译,以便在运行时获取对象的键入版本。

{
  "$id": "https://example.com/arrays.schema.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "xml remarks",
  "type": "object",
  "properties": {
    "fruits": {
      "type": "array",
      "items": {
        "type": "object",
        "title": "fruit",
        "required": ["naam"],
        "properties": {
        "naam": {
          "type": "string",
          "description": "The name of the fruit."
        }
        }
      }
    },
    "vegetables": {
      "type": "array",
      "items": { "$ref": "#/definitions/veggie" }
    }
  },
  "definitions": {
    "veggie": {
      "type": "object",
      "required": [ "veggieName", "veggieLike" ],
      "properties": {
        "veggieName": {
          "type": "string",
          "description": "The name of the vegetable."
        },
        "veggieLike": {
          "type": "boolean",
          "description": "Do I like this vegetable?"
        }
      }
    }
  }
}

在架构中创建了一个名称素食的参考。这在物业蔬菜中使用,并参考。

JSON模式在根对象上包含一个定义,但在属性元素上没有它。在属性元素上,没有什么可以指向正确的定义。

如何找到适合该属性的正确定义?

一般而言,为了解决 json-pointer($ ref是" ure-reference", #后的零件是" json-pointer"),您需要可以访问JSON文档的根。

因此,如果您当前的函数仅获取指向"属性"部分的参数,则需要给该函数一个指向文档根的参数。

(当您使用由一个以上文件组成的架构时,它会变得更加复杂;然后,您需要第二个参数,指向所有模式文档的根源)

这是解释JSON-SCHEMA文件的撰写软件中最困难的部分之一,尤其是如果您的语言/库不支持内置的JSON-Pointer-在这种情况下,您需要自己写它。

相关内容

  • 没有找到相关文章

最新更新