Maison > interface Web > js tutoriel > le corps du texte

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

高洛峰
Libérer: 2017-01-18 10:38:22
original
1659 Les gens l'ont consulté

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; }
        }
Copier après la connexion

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);
         }
Copier après la connexion
.

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; }
        }
Copier après la connexion

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; }
        }
Copier après la connexion

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);
            }
         }
Copier après la connexion

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; }
        }
Copier après la connexion

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 !

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!