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.
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“.
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:
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>
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>
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!