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 d'alternatives) ?

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

Linda Hamilton
Linda Hamiltonoriginal
2025-01-10 06:50:46122parcourir

How to Map JSON Field Names to .NET Object Properties using JavaScriptSerializer (or Alternatives)?

Utilisez JavaScriptSerializer.Deserialize : mappez les noms de champs JSON aux propriétés d'objet .NET

Question :

Comment mapper les noms de champs dans les données JSON aux noms de champs d'un objet .NET lors de l'utilisation de JavaScriptSerializer.Deserialize ?

Réponse :

La classe JavaScriptSerializer ne fournit pas de fonctionnalité de mappage direct des noms de champs. Cependant, vous pouvez exploiter la classe DataContractJsonSerializer, plus flexible, à cette fin.

Pour mapper les noms de champs :

  1. Ajoutez l'attribut DataContract à votre classe d'objet de données :
<code>[DataContract]
public class DataObject
{
}</code>
  1. Utilisez l'attribut DataMember pour spécifier le nom de la propriété JSON correspondant au champ objet :
<code>[DataMember(Name = "user_id")]
public int UserId { get; set; }

[DataMember(Name = "detail_level")]
public string DetailLevel { get; set; }</code>

Exemple :

<code>using System.Runtime.Serialization.Json;

public class Test
{
    public static void Main()
    {
        string json = "{\"user_id\":1234, \"detail_level\":\"low\"}";

        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject));

        using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
        {
            DataObject dataObject = serializer.ReadObject(ms) as DataObject;

            Console.WriteLine(dataObject.UserId); // 输出:1234
            Console.WriteLine(dataObject.DetailLevel); // 输出:low
        }
    }
}</code>

Remarque :

  • Si vous souhaitez conserver le champ DetailLevel sous forme d'énumération, vous pouvez utiliser un convertisseur JSON personnalisé pour gérer la conversion entre les valeurs de chaîne et d'énumération.
  • DataContractJsonSerializer prend également en charge le mappage des noms de champs dans 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!

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