Maison > développement back-end > C++ > Comment désérialiser un tableau d'objets JSON avec une structure incompatible à l'aide de Json.net ?

Comment désérialiser un tableau d'objets JSON avec une structure incompatible à l'aide de Json.net ?

DDD
Libérer: 2025-01-05 08:28:38
original
597 Les gens l'ont consulté

How to Deserialize a JSON Object Array with Mismatched Structure Using Json.net?

Sérialisation d'un tableau d'objets JSON avec Json.net

On peut rencontrer une situation dans laquelle une structure JSON souhaitée diffère légèrement du format attendu. Ce problème se pose par exemple dans le cas spécifique d'un tableau d'objets JSON, comme indiqué ci-dessous :

[
   {
      "customer":{
         ...
      }
   },
   {
      "customer":{
         ...
      }
   }
]
Copier après la connexion

Malheureusement, Json.net s'attend à une structure plus conventionnelle comme celle-ci :

{
    "customer": {
        ...
    }
}
Copier après la connexion

Par conséquent, comment concilier cette incohérence ?

La solution réside dans la création d'un modèle personnalisé qui s'aligne sur la structure JSON réelle. En définissant des classes comme CustomerJson et Customer, nous pouvons mapper les propriétés JSON à des champs spécifiques :

public class CustomerJson
{
    [JsonProperty("customer")]
    public Customer Customer { get; set; }
}

public class Customer
{
    [JsonProperty("first_name")]
    public string Firstname { get; set; }

    [JsonProperty("last_name")]
    public string Lastname { get; set; }

    ...
}
Copier après la connexion

Avec ce modèle personnalisé, nous pouvons sans effort désérialiser le JSON fourni en utilisant :

JsonConvert.DeserializeObject<List<CustomerJson>>(json);
Copier après la connexion

Enfin, pour des informations complètes sur la sérialisation et la désérialisation JSON, reportez-vous à la documentation officielle.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal