Maison >développement back-end >C++ >Comment créer efficacement des DTO C# à partir de réponses JSON complexes dans ASP.NET ?

Comment créer efficacement des DTO C# à partir de réponses JSON complexes dans ASP.NET ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-12 12:27:43229parcourir

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

Dans les applications ASP.NET, il est souvent nécessaire d'extraire des données de réponse JSON complexes dans DTO (Data Transfer Object). Avec des outils comme RestSharp, obtenir des données JSON à partir d'API est relativement simple, mais créer des DTO à partir de réponses complexes reste un défi.

Extraire les leads en tant que DTO de la réponse JSON

Supposons la réponse JSON suivante :

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

Le but est d'extraire la liste des Leads de cette réponse JSON en tant que DTO, chaque DTO contient les attributs "LEADID" et "Company".

Solution : utiliser JSON pour générer des classes C#

Visual Studio fournit une fonction pratique : "Coller JSON en tant que classe", qui peut générer automatiquement des classes C# basées sur la structure JSON.

Étapes :

  1. Copiez la réponse JSON.
  2. Dans Visual Studio, sélectionnez Edition > Collage spécial > Coller JSON en tant que classe.
  3. Cela générera une classe C# qui représente la structure JSON.

Pour la réponse JSON fournie, les classes suivantes seront générées :

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

Créer une classe LeadDto

Maintenant que nous avons une classe C#, nous pouvons définir notre classe LeadDto :

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

Remplissez la liste LeadDto

Afin de remplir la liste LeadDto en fonction de la réponse JSON, vous pouvez utiliser 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>

Cette requête créera une liste d'objets LeadDto, chacun contenant les propriétés "LEADID" et "Company" extraites de la réponse JSON.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn