首页 > 后端开发 > C++ > 如何在 ASP.NET 中从复杂的 JSON 响应高效创建 C# DTO?

如何在 ASP.NET 中从复杂的 JSON 响应高效创建 C# DTO?

Barbara Streisand
发布: 2025-01-12 12:27:43
原创
175 人浏览过

How to Efficiently Create C# DTOs from Complex JSON Responses in ASP.NET?

在ASP.NET应用中,经常需要将复杂JSON响应数据提取为DTO(数据传输对象)。借助RestSharp等工具,从API获取JSON数据已相对简易,但从复杂响应中创建DTO仍然是一项挑战。

从JSON响应中提取Leads作为DTOs

假设以下JSON响应:

<code class="language-json">{
  "response": {
    "result": {
      "Leads": {
        "row": [
          {
            "no": "1",
            "FL": [
              {
                "val": "LEADID",
                "content": "101"
              },
              {
                "val": "Company",
                "content": "Test 1"
              }
            ]
          },
          {
            "no": "2",
            "FL": [
              {
                "val": "LEADID",
                "content": "102"
              },
              {
                "val": "Company",
                "content": "Test 2"
              }
            ]
          }
        ]
      }
    },
    "uri": "/crm/private/json/Leads/getRecords"
  }
}</code>
登录后复制

目标是从该JSON响应中提取Leads列表作为DTO,每个DTO包含"LEADID"和"Company"属性。

解决方案:利用JSON生成C#类

Visual Studio提供了一个方便的功能:“粘贴JSON作为类”,可以根据JSON结构自动生成C#类。

步骤:

  1. 复制JSON响应。
  2. 在Visual Studio中,依次选择“编辑”>“特殊粘贴”>“粘贴JSON作为类”。
  3. 这将生成代表JSON结构的C#类。

对于提供的JSON响应,将生成以下类:

<code class="language-csharp">public class Rootobject
{
    public Response response { get; set; }
}

public class Response
{
    public Result result { get; set; }
    public string uri { get; set; }
}

public class Result
{
    public Leads Leads { get; set; }
}

public class Leads
{
    public Row[] row { get; set; }
}

public class Row
{
    public string no { get; set; }
    public FL[] FL { get; set; }
}

public class FL
{
    public string val { get; set; }
    public string content { get; set; }
}</code>
登录后复制

创建LeadDto类

现在我们有了C#类,可以定义我们的LeadDto类:

<code class="language-csharp">public class LeadDto
{
    public string LeadId { get; set; }
    public string Company { get; set; }
}</code>
登录后复制

填充LeadDto列表

为了根据JSON响应填充LeadDto列表,可以使用LINQ:

<code class="language-csharp">var leads = from response in Rootobject.response.result.Leads.row
            select new LeadDto
            {
                LeadId = response.FL.First(fl => fl.val == "LEADID").content,
                Company = response.FL.First(fl => fl.val == "Company").content
            };</code>
登录后复制

此查询将创建一个LeadDto对象的列表,每个对象都包含从JSON响应中提取的"LEADID"和"Company"属性。

以上是如何在 ASP.NET 中从复杂的 JSON 响应高效创建 C# DTO?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板