Maison  >  Article  >  interface Web  >  Une brève analyse de la sérialisation et de la désérialisation JSON

Une brève analyse de la sérialisation et de la désérialisation JSON

高洛峰
高洛峰original
2017-01-18 10:38:221671parcourir

Méthode 1 : introduisez l'espace de noms System.Web.Script.Serialization et utilisez la classe JavaScriptSerializer pour implémenter une classe de sérialisation simple : Personnel

    public class Personnel
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }

Effectuer la sérialisation et la désérialisation :

protected void Page_Load(object sender, EventArgs e)
        {
            Personnel personnel = new Personnel();
            personnel.Id = 1;
            personnel.Name = "小白";
            JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
            //执行序列化
            string r1 = jsonSerializer.Serialize(personnel);

            //执行反序列化
            Personnel _Personnel = jsonSerializer.Deserialize<Personnel>(r1);
         }
.

Résultat de sortie r1 : {"Id":1,"Name":"小白"}
Vous pouvez utiliser l'attribut ScriptIgnore pour marquer de ne pas sérialiser les propriétés publiques ou les champs publics.

        public class Personnel
        {
            [ScriptIgnore]
            public int Id { get; set; }
            public string Name { get; set; }
        }

Résultat de sortie r1 : {"Name": "小白"}

Méthode 2 : introduire l'espace de noms System.Runtime.Serialization.Json et utiliser la classe DataContractJsonSerializer pour implémenter la sérialisation

Classe de sérialisation : Personnes

        public class People
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }

Effectuer la sérialisation et la désérialisation

protected void Page_Load(object sender, EventArgs e)
        {
            People people = new People();
            people.Id = 1;
            people.Name = "小白";

            DataContractJsonSerializer json = new DataContractJsonSerializer(people.GetType());
            string szJson = "";
            //序列化
            using (MemoryStream stream = new MemoryStream())
            {
                json.WriteObject(stream, people);
                szJson = Encoding.UTF8.GetString(stream.ToArray());
            }
            //反序列化
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People));
                People _people = (People)serializer.ReadObject(ms);
            }
         }

résultat de sortie szJson : {"Id":1,"Name":"small White ">


Vous pouvez utiliser IgnoreDataMember : pour spécifier que le membre ne fait pas partie du contrat de données et n'est pas sérialisé, DataMember : pour définir les paramètres d'attribut de sérialisation et pour utiliser l'attribut DataMember pour marquer les champs doit utiliser DataContract pour marquer la classe, sinon la marque DataMember ne fonctionnera pas.

[DataContract]
        public class People
        {
            [DataMember(Name = "id")]
            public int Id { get; set; }
            [IgnoreDataMember]
            public string Name { get; set; }
        }

Résultat de sortie : {"id":1}

Pour plus d'articles sur la sérialisation et la désérialisation JSON, veuillez faire attention au site Web PHP 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