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.
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".
Visual Studio menyediakan fungsi yang mudah: "Tampal JSON sebagai kelas", yang boleh menjana kelas C# secara automatik berdasarkan struktur JSON.
Langkah:
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>
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>
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!