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
Freigeben: 2025-01-12 12:27:43
Original
228 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage