在ASP.NET應用程式中,經常需要將複雜JSON回應資料擷取為DTO(資料傳輸物件)。透過RestSharp等工具,從API取得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回應中提取Leads清單作為DTO,每個DTO包含"LEADID"和"Company"屬性。
Visual Studio提供了一個方便的功能:“貼上JSON作為類別”,可以根據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>
現在我們有了C#類,可以定義我們的LeadDto類:
<code class="language-csharp">public class LeadDto { public string LeadId { get; set; } public string Company { get; set; } }</code>
為了根據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>
此查詢將建立一個LeadDto物件的列表,每個物件都包含從JSON回應中提取的"LEADID"和"Company"屬性。
以上是如何在 ASP.NET 中從複雜的 JSON 回應高效能建立 C# DTO?的詳細內容。更多資訊請關注PHP中文網其他相關文章!