从 C# 类生成 JSON 模式
Posted
技术标签:
【中文标题】从 C# 类生成 JSON 模式【英文标题】:Generating JSON schema from C# class 【发布时间】:2013-03-24 20:40:16 【问题描述】:有没有办法以编程方式?
我们可以使用http://www.jsonschema.net/手动完成的事情
【问题讨论】:
在此有一个日志:csharp2json.azurewebsites.net 没有人发现该站点不是从 C# 生成架构,而是从 JSON 生成。之前评论的链接是 C# 到 JSON,而不是模式。然而,这是在线进行的一种方法。 dotnetfiddle.net/sjmS9Z 【参考方案1】:Json.NET 通过Newtonsoft.Json.Schema NuGet 包支持此功能。如何使用它的说明可以在official documentation 中找到,但我还在下面提供了一个简单的示例。
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" ]
//
【讨论】:
【参考方案2】:另一个支持生成 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();
【讨论】:
【参考方案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);
【讨论】:
它不是免费的,它有 10 个小时的时间【参考方案4】:对于那些从谷歌搜索反向的人 (从 JSON 生成 C# 类)- 我使用那些优秀的在线工具:
JSON:http://json2csharp.com/ (来源:http://jsonclassgenerator.codeplex.com/)
XML:http://xmltocsharp.azurewebsites.net/ (来源:https://github.com/msyoung/XmlToCSharp)
【讨论】:
来自反向 jsonclassgenerator 工具很棒。另一个简单的选项是在 Visual Studio 中使用 Edit->Paste Special->Paste JSON as Classes。这也创建了一个类!有时很方便。 @sandiejat:很高兴知道。不知道从哪个版本的 VS 开始。 好像是2012.2 RC带来的。我们正忙着做困难的事情! :) blogs.msdn.microsoft.com/webdev/2012/12/18/…以上是关于从 C# 类生成 JSON 模式的主要内容,如果未能解决你的问题,请参考以下文章