Maison > développement back-end > C++ > Comment puis-je mapper des champs JSON nommés différemment aux propriétés C# pendant la désérialisation ?

Comment puis-je mapper des champs JSON nommés différemment aux propriétés C# pendant la désérialisation ?

Mary-Kate Olsen
Libérer: 2025-01-10 09:15:42
original
602 Les gens l'ont consulté

How Can I Map Differently Named JSON Fields to C# Properties During Deserialization?

Modifier le nom du champ en utilisant JavaScriptSerializer.Deserialize en C#

La classe

en C# fournit un moyen pratique de désérialiser les données JSON en objets C#. Cependant, par défaut, il mappe les noms de champs JSON directement aux noms de propriétés dans l'objet cible. Cela peut entraîner l'échec de la désérialisation lorsque le nom du champ JSON est incohérent avec le nom de la propriété dans l'objet C#. JavaScriptSerializer

Pour résoudre ce problème, il existe deux méthodes courantes :

1. Utilisez l'attribut XmlElement

Cette méthode implique de définir manuellement le mappage du nom de champ à l'aide de l'attribut

. Cependant, comme mentionné dans le message original, cette méthode ne fonctionne pas avec [XmlElement]. Le mappage des noms de champs doit plutôt être implémenté en utilisant l'attribut JavaScriptSerializer. [DataMember]

2. Utiliser DataContractJsonSerializer Les classes

fournies dans l'espace de noms

System.Runtime.Serialization fournissent une solution plus puissante pour le mappage des noms de champs. Le nom du champ JSON correspondant peut être spécifié explicitement en appliquant l'attribut DataContractJsonSerializer sur la propriété d'un objet C#. [DataMember]

Par exemple :

<code class="language-csharp">[DataContract]
public class DataObject
{
    [DataMember(Name = "user_id")]
    public int UserId { get; set; }

    [DataMember(Name = "detail_level")]
    public string DetailLevel { get; set; }
}</code>
Copier après la connexion
Dans cet exemple, les noms de champs JSON

et user_id correspondent respectivement aux propriétés detail_level et UserId dans l'objet C#. DetailLevel

Pour utiliser

pour désérialiser les données JSON : DataContractJsonSerializer

<code class="language-csharp">using System.Runtime.Serialization.Json;
using System.Text;
using System.IO;

...

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject));
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonData));
DataObject dataObject = serializer.ReadObject(ms) as DataObject;</code>
Copier après la connexion
En utilisant les attributs

et DataContractJsonSerializer, vous pouvez modifier efficacement les noms de champs lors de la désérialisation JSON, garantissant ainsi un mappage correct entre les données JSON et les objets C#. [DataMember]

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