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

Eine kurze Analyse der JSON-Serialisierung und -Deserialisierung

高洛峰
高洛峰Original
2017-01-18 10:38:221712Durchsuche

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; }
        }

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);
         }

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; }
        }

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; }
        }

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);
            }
         }

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; }
        }

Ausgabeergebnis: {"id":1}

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

Stellungnahme:
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