Heim > Web-Frontend > js-Tutorial > Eine kurze Analyse der JSON-Serialisierung und -Deserialisierung

Eine kurze Analyse der JSON-Serialisierung und -Deserialisierung

高洛峰
Freigeben: 2017-01-18 10:38:22
Original
1682 Leute haben es durchsucht

Methode 1: Führen Sie den System.Web.Script.Serialization-Namespace ein und verwenden Sie die JavaScriptSerializer-Klasse, um eine einfache Serialisierungsklasse zu implementieren: Personnel

    public class Personnel
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }
Nach dem Login kopieren

Serialisierung und Deserialisierung durchführen:

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);
         }
Nach dem Login kopieren

r1-Ausgabeergebnis: {"Id":1,"Name":"小白"}
Sie können das ScriptIgnore-Attribut verwenden, um zu markieren, dass öffentliche Eigenschaften oder öffentliche Felder nicht serialisiert werden sollen.

        public class Personnel
        {
            [ScriptIgnore]
            public int Id { get; set; }
            public string Name { get; set; }
        }
Nach dem Login kopieren

r1-Ausgabeergebnis: {"Name":"小白"}

Methode 2: Führen Sie den System.Runtime.Serialization.Json-Namespace ein und verwenden Sie die DataContractJsonSerializer-Klasse, um die Serialisierung zu implementieren

Serialisierungsklasse: Personen

        public class People
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }
Nach dem Login kopieren

Serialisierung und Deserialisierung durchführen

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);
            }
         }
Nach dem Login kopieren

szJson-Ausgabeergebnis: {"Id":1,"Name":klein Weiß "}


Sie können IgnoreDataMember: verwenden, um anzugeben, dass das Mitglied nicht Teil des Datenvertrags ist und nicht serialisiert wird. DataMember: definiert die Parameter des Serialisierungsattributs. Dies ist erforderlich Um das DataMember-Attribut zum Markieren des Felds zu verwenden, verwenden Sie DataContract, um die Klasse zu markieren, andernfalls funktioniert die DataMember-Markierung nicht.

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

Ausgabeergebnis: {"id":1}

Weitere Artikel zur JSON-Serialisierung und -Deserialisierung finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage