从 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 模式的主要内容,如果未能解决你的问题,请参考以下文章

从 JSON Schema 生成 C# 类 [关闭]

从 Java 类生成 JSON 模式

C#如何生成JSON字符串提交给接口(服务器)

C#如何生成JSON字符串?(序列化对象)

如何组合 Json 模式

JSON C# Class Generator ---由json字符串生成C#实体类的工具