Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta C# DTO dengan Cekap daripada Respons JSON Kompleks dalam ASP.NET?

Bagaimana untuk Mencipta C# DTO dengan Cekap daripada Respons JSON Kompleks dalam ASP.NET?

Barbara Streisand
Barbara Streisandasal
2025-01-12 12:27:43231semak imbas

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

Dalam aplikasi ASP.NET, selalunya perlu untuk mengekstrak data tindak balas JSON yang kompleks ke dalam DTO (Data Transfer Object). Dengan alatan seperti RestSharp, mendapatkan data JSON daripada API agak mudah, tetapi mencipta DTO daripada respons yang kompleks masih menjadi cabaran.

Ekstrak Petunjuk sebagai DTO daripada respons JSON

Anggapkan respons JSON berikut:

<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>

Matlamatnya adalah untuk mengekstrak senarai Petunjuk daripada respons JSON ini sebagai DTO, setiap DTO mengandungi atribut "LEADID" dan "Syarikat".

Penyelesaian: Gunakan JSON untuk menjana kelas C#

Visual Studio menyediakan fungsi yang mudah: "Tampal JSON sebagai kelas", yang boleh menjana kelas C# secara automatik berdasarkan struktur JSON.

Langkah:

  1. Salin respons JSON.
  2. Dalam Visual Studio, pilih Edit > Tampal Khas > Tampal JSON sebagai Kelas.
  3. Ini akan menjana kelas C# yang mewakili struktur JSON.

Untuk respons JSON yang disediakan, kelas berikut akan dihasilkan:

<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>

Buat kelas LeadDto

Sekarang kami mempunyai kelas C#, kami boleh menentukan kelas LeadDto kami:

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

Isi senarai LeadDto

Untuk mengisi senarai LeadDto berdasarkan respons JSON, anda boleh menggunakan 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>

Pertanyaan ini akan membuat senarai objek LeadDto, setiap satu mengandungi sifat "LEADID" dan "Syarikat" yang diekstrak daripada respons JSON.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta C# DTO dengan Cekap daripada Respons JSON Kompleks dalam ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn