44

有没有办法以编程方式从 C# 类生成 JSON 模式?

我们可以使用http://www.jsonschema.net/手动执行的操作

4

4 回答 4

38

另一个支持生成 JSON Schema v4 的选项是NJsonSchema

var schema = JsonSchema.FromType<Person>();
var schemaJson = schema.ToJson();

该库可以通过NuGet安装。

NJsonSchema v9.4.3+ 的更新:

using NJsonSchema;

var schema = await JsonSchema.FromTypeAsync<Person>();
var schemaJson = schema.ToJson();
于 2015-10-12T12:32:53.837 回答
3
JsonSchemaGenerator js = new JsonSchemaGenerator();
var schema = js.Generate(typeof(Person));
schema.Title = typeof(Person).Name;
using (StreamWriter fileWriter = File.CreateText(filePath))
{
      fileWriter.WriteLine(schema);
}
于 2017-08-11T21:59:55.347 回答
0

对于那些从谷歌搜索反向
(从 JSON 生成 C# 类)登陆这里的人 - 我使用那些优秀的在线工具:

JSON: http:
//json2csharp.com/
(来源:http: //jsonclassgenerator.codeplex.com/

XML: http:
//xmltocsharp.azurewebsites.net/
(来源:https ://github.com/msyoung/XmlToCSharp )

于 2015-09-06T12:01:37.207 回答
0

这在Json.NET中通过Newtonsoft.Json.Schema NuGet 包得到支持。有关如何使用它的说明可以在官方文档中找到,但我还在下面提供了一个简单的示例。

JSchemaGenerator generator = new JSchemaGenerator();
JSchema schema = generator.Generate(typeof(Person));
Console.WriteLine(schema.ToString());
//{
//  "type": "object",
//  "properties": {
//    "Name": {
//      "type": [ "string", "null" ]
//    },
//    "Age": { "type": "integer" }
//  },
//  "required": [ "Name", "Age" ]
//}
于 2021-10-12T13:12:59.730 回答