【问题标题】:How to auto-generate a C# class file from a JSON string [closed]如何从 JSON 字符串自动生成 C# 类文件 [关闭]
【发布时间】:2014-03-03 21:59:05
【问题描述】:

给定以下 JSON 对象,

form = {
  "name": "",
  "address": {
    "street": "",
    "city": "",
    "province": "",
    "postalCode": "",
    "country": ""
  },
  "phoneDay": "",
  "phoneCell": "",
  "businessName": "",
  "website": "",
  "email": ""
}

什么是自动生成以下 C# 类的工具?

public class ContactInfo
{
    public string Name { get; set; }
    public Address Address { get; set; }
    public string PhoneDay { get; set; }
    public string PhoneCell { get; set; }
    public string BusinessName { get; set; }
    public string Website { get; set; }
    public string Email { get; set; }
}

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
    public string Province { get; set; }
    public string PostalCode { get; set; }
    public string Country { get; set; }
}

我们已经研究过这些问题:

Generate C# classes from JSON Schema 正在询问 JSON 模式,这可能是一种在未来可以使用的方法。

Benefits and drawbacks of generated C# classes for Json objects

【问题讨论】:

  • 试试这个工具可能会有所帮助..tools4geeks.com/json-to-Csharp-classes
  • 有人知道如何用 Swagger YAML 做同样的事情吗?
  • 不幸的是,json2charp.com 现在是一个正在出售的域名。这太糟糕了,而且快管的有点笨重。有人知道更好的选择吗?
  • @DARKGuy jsonutils jsonutils.com

标签: c# json code-generation


【解决方案1】:

五个选项:

优点和缺点:

  • jsonclassgenerator 转换为 PascalCase,但其他不转换。

  • app.quicktype.io 具有一些逻辑来识别字典并处理名称为无效 c# 标识符的 JSON 属性。

【讨论】:

  • Web Essentials 和 json2csharp 都做得很好。没有尝试 jsonclassgenerator,因为需要为此打开一个单独的应用程序似乎很麻烦
  • 我没有尝试过 jsonclassgenerator 但我可以看到优势。例如,如果您有一个模拟 API,您可以在一组端点上进行交互以重新生成您的模型。您可以设置一个脚本来检查新提交并在有任何更改时更新模型。您不想每次都手动粘贴新的 json,因为这很容易出错。
  • json2csharp 工具在格式化类尤其是类名方面比 VS 做得更好。它将删除诸如“_”之类的模棱两可的字符,并正确地将类名改为驼峰式。
  • "jsonutils" 很酷,它也可以生成像“Json properties”这样的属性,jsonutils.com
  • app.quicktype.io 出于安全考虑,这个不能在某些机器上运行。
【解决方案2】:

Visual Studio 2012(安装了 ASP.NET 和 Web Tools 2012.2 RC)支持这个natively

Visual Studio 2013 及更高版本已内置此功能。

(图片提供:robert.muehsig

【讨论】:

  • 我认为这个解决方案是最好的,因为您不需要外部程序!
  • 在粘贴here 之前是在开发者工具中将 JSON 从 console.log 复制到剪贴板的解决方案。希望有所帮助。
【解决方案3】:

如果您将 Web Essentials 安装到 Visual Studio 中,您可以转到 Edit => Past special => paste JSON as class。

这可能是最简单的。

Web Essentials:http://vswebessentials.com/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2014-03-17
    • 2011-12-10
    • 2012-09-17
    • 2021-07-12
    • 2021-06-21
    相关资源
    最近更新 更多