Heim >Backend-Entwicklung >C++ >Wie erstellt man effizient C#-DTOs aus komplexen JSON-Antworten in ASP.NET?

Wie erstellt man effizient C#-DTOs aus komplexen JSON-Antworten in ASP.NET?

Barbara Streisand
Barbara StreisandOriginal
2025-01-12 12:27:43231Durchsuche

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

In ASP.NET-Anwendungen ist es oft notwendig, komplexe JSON-Antwortdaten in DTO (Data Transfer Object) zu extrahieren. Mit Tools wie RestSharp ist das Abrufen von JSON-Daten von APIs relativ einfach, aber das Erstellen von DTOs aus komplexen Antworten ist immer noch eine Herausforderung.

Leads als DTOs aus der JSON-Antwort extrahieren

Gehen Sie von der folgenden JSON-Antwort aus:

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

Das Ziel besteht darin, die Liste der Leads aus dieser JSON-Antwort als DTO zu extrahieren. Jedes DTO enthält die Attribute „LEADID“ und „Unternehmen“.

Lösung: Verwenden Sie JSON, um C#-Klassen zu generieren

Visual Studio bietet eine praktische Funktion: „JSON als Klasse einfügen“, mit der automatisch C#-Klassen basierend auf der JSON-Struktur generiert werden können.

Schritte:

  1. Kopieren Sie die JSON-Antwort.
  2. Wählen Sie in Visual Studio Bearbeiten > Inhalte einfügen > JSON als Klasse einfügen.
  3. Dadurch wird eine C#-Klasse generiert, die die JSON-Struktur darstellt.

Für die bereitgestellte JSON-Antwort werden die folgenden Klassen generiert:

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

Da wir nun eine C#-Klasse haben, können wir unsere LeadDto-Klasse definieren:

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

Füllen Sie die LeadDto-Liste aus

Um die LeadDto-Liste basierend auf der JSON-Antwort zu füllen, können Sie LINQ verwenden:

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

Diese Abfrage erstellt eine Liste von LeadDto-Objekten, die jeweils die aus der JSON-Antwort extrahierten Eigenschaften „LEADID“ und „Company“ enthalten.

Das obige ist der detaillierte Inhalt vonWie erstellt man effizient C#-DTOs aus komplexen JSON-Antworten in ASP.NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn