Ste*_*art 5 c# json.net jsonschema
我正在使用 JSON.NET JSchema Generator 创建基于用数据注释属性修饰的类的架构。我正在使用这样的生成器:
var generator = new JSchemaGenerator();
generator.ContractResolver = new CamelCasePropertyNamesContractResolver();
generator.SchemaIdGenerationHandling = SchemaIdGenerationHandling.TypeName;
var schema = generator.Generate(typeof(myType));
string jsonSchema = schema.ToString();
Run Code Online (Sandbox Code Playgroud)
这会生成一个示例架构,如下所示:
{
"$id": "myType",
"definitions": {
"mySubType" : {
"$id": "mySubType",
"type": [
"object",
"null"
],
"properties": {
"name": {
"type: "string"
}
},
"required": [
"name"
]
}
},
"type": "object",
"properties": {
"name": {
"type": "string"
},
"details": {
"$ref": "mySubType"
}
},
"required": [
"name",
"details"
]
}
Run Code Online (Sandbox Code Playgroud)
我希望能够生成一个架构,其中包含 和 的附加属性myType,mySubType如下所示:
{
"$id": "myType",
"definitions": {
"mySubType" : {
"$id": "mySubType",
"type": [
"object",
"null"
],
"properties": {
"name": {
"type: "string"
}
},
"required": [
"name"
],
"additionalProperties": false
}
},
"type": "object",
"properties": {
"name": {
"type": "string"
},
"details": {
"$ref": "mySubClass"
}
},
"required": [
"name",
"details"
],
"additionalProperties": false
}
Run Code Online (Sandbox Code Playgroud)
如何使用 JSchema 生成器生成这样的模式?
是否有类级别的数据注释属性可以执行此操作?
小智 4
有点晚了,但今天我为此苦苦挣扎..
void Main()
{
var generator = new JSchemaGenerator();
generator.ContractResolver = new CamelCasePropertyNamesContractResolver();
generator.SchemaIdGenerationHandling = SchemaIdGenerationHandling.TypeName;
var schema = generator.Generate(typeof(myType));
RejectAdditionalProperties(schema);
string jsonSchema = schema.ToString();
}
static void RejectAdditionalProperties(JSchema schema)
{
schema.AllowAdditionalProperties = false;
foreach(var s in schema.Properties.Values) RejectAdditionalProperties(s);
}
Run Code Online (Sandbox Code Playgroud)