Json.net Newtonsoft.Json.Schema.Generation:人类可读';定义';部分
我希望更好地生成和组织定义部分,对我来说,这意味着不允许在定义中建立深度,但是,结构树中涉及的每个类都应该在定义部分有自己的条目,并通过$ref引用。这意味着对于每个定义,我只有一个属性列表,这些属性要么是基本类型(字符串、布尔值等),要么是另一个自定义类的另一个定义条目的$ref。您还可以将其视为深度1定义,接近于类最初在C#中的定义方式 通过一个简单的例子来说明这一点:Json.net Newtonsoft.Json.Schema.Generation:人类可读';定义';部分,json.net,jsonschema,Json.net,Jsonschema,我希望更好地生成和组织定义部分,对我来说,这意味着不允许在定义中建立深度,但是,结构树中涉及的每个类都应该在定义部分有自己的条目,并通过$ref引用。这意味着对于每个定义,我只有一个属性列表,这些属性要么是基本类型(字符串、布尔值等),要么是另一个自定义类的另一个定义条目的$ref。您还可以将其视为深度1定义,接近于类最初在C#中的定义方式 通过一个简单的例子来说明这一点: JSchemaGenerator schemaGenerator = new JSchemaGen
JSchemaGenerator schemaGenerator = new JSchemaGenerator();
schemaGenerator = new JSchemaGenerator()
{
DefaultRequired = Newtonsoft.Json.Required.DisallowNull,
SchemaIdGenerationHandling = SchemaIdGenerationHandling.TypeName,
SchemaLocationHandling = SchemaLocationHandling.Definitions,
SchemaReferenceHandling = SchemaReferenceHandling.Objects,
};
JSchema schema = schemaGenerator.Generate(typeof(Setting));
呈现:
{
"id": "Setting",
"definitions": {
"SubSetting": {
"id": "SubSetting",
"type": "object",
"properties": {
"SubSubSetting": {
"id": "SubSubSetting",
"type": "object",
"properties": {
"String": {
"type": "string"
}
}
}
}
},
"SubSubSetting": {
"$ref": "SubSubSetting"
}
},
"type": "object",
"properties": {
"SubSetting": {
"$ref": "SubSetting"
},
"SubSubSetting": {
"$ref": "SubSubSetting"
}
}
}
因此,SubSubSetting
定义被放置在内联SubSetting
定义中,之后我们将subsubsubsetting
定义为对该内联定义的引用。这就是我想要避免的,因为对于复杂的数据结构,它变得非常模糊,我想提供模式,甚至作为基于数据注释和JsonProperty
的动态自动生成文档的一部分
如何使用JSchemaGenerator
实现这一点
也许我不应该这样做,但作为第二个非常简短的问题:那些
$ref
语法正确吗?它们是否应该看起来像“#/definitions/SubSetting”
?最新版本的Json.NET模式(3.0.3)已更新以解决此问题<代码>子子子集将包含完整的定义,而不仅仅是一个$ref