我想访问模式中的定义以便获得定义的命名。我正在使用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?"
}
}
}
}
}
在模式中,将创建一个引用,其名称为veggie。在属性蔬菜中使用它作为参考。
Json模式在根对象上包含定义,但在property元素上没有定义。在property元素上,没有任何东西可以指向正确的定义。
我如何找到该属性的正确定义?
答案 0 :(得分:0)
通常,为了解析json-pointer
($ ref是“ uri-reference”,而#
之后的部分是“ json-pointer”),您需要有权访问json文档的根。
因此,如果您当前有一个仅获得指向“属性”部分的参数的函数,则需要为该函数提供第二个指向文档根目录的参数。
(当您使用由多个文件组成的架构时,它将变得更加复杂;然后您需要第二个参数来指向所有架构文档的根目录)
这是解释json模式文件的编写软件中最困难的部分之一,特别是如果您的语言/库不支持内置的json-pointer的话-在这种情况下,您需要自己编写