Maison > développement back-end > C++ > Comment mapper les noms de champs JSON aux propriétés d'objet .NET à l'aide de JavaScriptSerializer ou DataContractJsonSerializer ?

Comment mapper les noms de champs JSON aux propriétés d'objet .NET à l'aide de JavaScriptSerializer ou DataContractJsonSerializer ?

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

How to Map JSON Field Names to .NET Object Properties Using JavaScriptSerializer or DataContractJsonSerializer?

Mappage des noms de champs JSON avec les propriétés des objets .NET

L'analyse des données JSON dans des objets .NET nécessite souvent de mapper les noms de champs JSON aux propriétés d'objet correspondantes. Cela devient crucial lorsque les noms de champs JSON diffèrent des noms de propriétés .NET. Bien que JavaScriptSerializer.Deserialize puisse sembler pratique, il ne gère pas toujours de manière fiable les incompatibilités de noms. Une solution plus robuste utilise DataContractJsonSerializer.

Utilisation de DataContractJsonSerializer pour une cartographie fiable

DataContractJsonSerializer fournit un contrôle précis sur le mappage des noms de champs via l'attribut DataMember. Voici comment :

<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

Ce code définit une DataObject classe. L'attribut DataMember mappe explicitement les champs JSON "user_id" et "detail_level" aux propriétés .NET UserId et DetailLevel respectivement.

La désérialisation est alors simple :

<code class="language-csharp">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

Cet extrait de code désérialise les données JSON (JsonData) dans une instance DataObject.

Considérations :

  • Bien que DataContractJsonSerializer offre des capacités de cartographie supérieures à celles de JavaScriptSerializer, il peut être légèrement plus verbeux.
  • Pour les propriétés DetailLevel définies comme des énumérations, un DataContractResolver personnalisé peut faciliter le mappage des valeurs.
  • DataContractJsonSerializer est également compatible avec Silverlight.

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