我正在致力于从 C# 中的类动态生成 HTML 表单。我目前的方法是生成一个 JSON Schema来自 C# 类,使用 JsonSchemaGenerator包含在服务器端的 Json.NET 中,然后在客户端呈现来自此 JSON 架构的表单。
我希望能够添加 JSON 架构属性,例如 title or description到 C# 类的属性,但找不到任何简单的方法让 JsonSchemaGenerator 将这些包含在生成的模式中。
我可以使用 C# 属性之一将这些 JSON 架构属性添加到类本身 JsonObjectAttribute , JsonArrayAttribute , 或 JsonDictionaryAttribute , 但使用 JsonProperty attribute 属性,我只能更改属性是否需要。
本质上,我想要的是生成这个 JSON Schema:
{
"type": "object",
"properties": {
"MyString": {
"type": "string",
"title": "Title for my string"
}
}
}
来自这个类(class):
class MyClass
{
public string MyString { get; set; }
}
我应该写一个自定义 JsonConverter 吗?或手动添加架构属性? Json.NET 不是适合这项工作的工具吗? JSON Schema 首先是错误的格式吗?还是我错过了 JsonSchemaGenerator 的一些奇特功能?
最佳答案
JsonSchemaGenerator
认为一个类型的所有对象都具有相同的模式(一般意义上的“类型”,而不是 Type
类)。它不是为支持属性的单独模式而设计的。它考虑类型的 Title
和 Description
属性,而不是属性(这就是它只查找 JsonContainerAttribute
及其后代的原因)。因此,即使您设法使用 JsonConverter
作为解决方法(生成“类型”),它本质上也是一种 hack。
如果我理解正确,Json.NET 对待Title
和Description
的方式是错误的。我推荐submitting a feature request/bug report .
附言我只是看了代码,我不是很确定。
关于c# - 使用 Json.NET JsonSchemaGenerator 将 JSON Schema 属性(标题、描述)添加到 C# 类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21530430/