【问题标题】:Generating JSON schema from C# class从 C# 类生成 JSON 模式
【发布时间】:2013-03-24 20:40:16
【问题描述】:

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

我们可以使用http://www.jsonschema.net/手动完成的事情

【问题讨论】:

标签: c# json jsonschema


【解决方案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/…
      猜你喜欢
      • 2014-11-29
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 2017-09-19
      • 2021-12-05
      • 2017-02-22
      相关资源
      最近更新 更多