使用JSON.NET JsonSchemaGenerator将JSON模式属性(标题、说明)添加到C#类属性中
我正在研究从C#中的类动态生成HTML表单。我目前的方法是在服务器端使用Json.NET中包含的从C#类生成一个表单,然后在客户端从这个Json模式呈现表单 我希望能够将JSON模式属性(如a)添加到C#类的属性中,但找不到任何简单的方法让JsonSchemaGenerator在生成的模式中包含这些属性 我可以使用其中一个C#属性将这些JSON模式属性添加到类本身,或者,但是使用属性的属性,我只能更改该属性是否是必需的 本质上,我想要的是生成这个JSON模式: 本课程:使用JSON.NET JsonSchemaGenerator将JSON模式属性(标题、说明)添加到C#类属性中,c#,json,json.net,jsonschema,C#,Json,Json.net,Jsonschema,我正在研究从C#中的类动态生成HTML表单。我目前的方法是在服务器端使用Json.NET中包含的从C#类生成一个表单,然后在客户端从这个Json模式呈现表单 我希望能够将JSON模式属性(如a)添加到C#类的属性中,但找不到任何简单的方法让JsonSchemaGenerator在生成的模式中包含这些属性 我可以使用其中一个C#属性将这些JSON模式属性添加到类本身,或者,但是使用属性的属性,我只能更改该属性是否是必需的 本质上,我想要的是生成这个JSON模式: 本课程: 我应该在模式属性中手
我应该在模式属性中手动编写自定义或添加吗?Json.NET不是适合该作业的工具吗?JSON模式一开始是错误的格式吗?还是我错过了JsonSchemaGenerator的一些奇特功能?
JsonSchemaGenerator
认为一个类型的所有对象都具有相同的模式(“类型”在泛型意义上,而不是type
class)。它不是为支持属性的单个模式而设计的。它考虑类型的Title
和Description
属性,而不是属性的属性(这就是为什么它只查找JsonContainerAttribute
及其子体)。因此,即使您设法使用JsonConverter
作为一种变通方法(生成“类型”),它本质上也是一种黑客行为
如果我理解正确的话,Json.NET对待Title
和Description
的方式是错误的。我推荐
另外,我只是看了一下代码,我不太确定。谢谢。我同意您的看法,只是JsonProperty属性的必需属性允许我稍微更改每个属性的模式。但是如果我找不到更好的答案,我肯定会提交一个功能请求。嗨,你找到了如何使用Json.NET实现这一点的解决方案吗?我还需要指定属性描述……我修改了Json.NET来完成我想要做的事情,但是更改没有合并到主项目中。但是可以在这里找到:它被拒绝了,因为它包含多个特性。也许我们应该为每个功能创建一个分叉?是的,这是正确的。我为工作做了补丁,我们离开了JsonSchemaGenerator,我没有时间清理拉请求。尽管如此,您可以自由地对项目进行两次分叉,应用我的补丁,并为每个补丁提交一个拉取请求——我很高兴看到它们合并在一起。
{
"type": "object",
"properties": {
"MyString": {
"type": "string",
"title": "Title for my string"
}
}
}
class MyClass
{
public string MyString { get; set; }
}