ホームページ >バックエンド開発 >C++ >ASP.NET で複雑な JSON 応答から C# DTO を効率的に作成する方法

ASP.NET で複雑な JSON 応答から C# DTO を効率的に作成する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-12 12:27:43178ブラウズ

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

ASP.NET アプリケーションでは、多くの場合、複雑な JSON 応答データを DTO (データ転送オブジェクト) に抽出する必要があります。 RestSharp のようなツールを使用すると、API から JSON データを取得するのは比較的簡単ですが、複雑な応答から DTO を作成するのは依然として課題です。

JSON 応答からリードを DTO として抽出します

次の 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 応答からリードのリストを DTO として抽出することです。各 DTO には「LEADID」属性と「Company」属性が含まれます。

解決策: JSON を使用して C# クラスを生成します

Visual Studio には、JSON 構造に基づいて C# クラスを自動生成できる「JSON をクラスとして貼り付け」という便利な機能があります。

手順:

  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>

このクエリは、JSON 応答から抽出された「LEADID」および「Company」プロパティを含む LeadDto オブジェクトのリストを作成します。

以上がASP.NET で複雑な JSON 応答から C# DTO を効率的に作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。