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
Libérer: 2025-01-12 12:27:43
original
175 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal