首頁 >web前端 >js教程 >淺析JSON序列化與反序列化

淺析JSON序列化與反序列化

高洛峰
高洛峰原創
2017-01-18 10:38:221712瀏覽

方法一:引入System.Web.Script.Serialization命名空間使用JavaScriptSerializer類別實作簡單的序列化序列化類別:Personnel

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

執行序列化反序列化:

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輸出結果:{"Id":1 ,"Name":"小白"} 
可以使用ScriptIgnore屬性標記不序列化公共屬性或公共欄位。

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

r1輸出結果:{"Name":"小白"} 

方法二:引入System.Runtime.Serialization.Json命名空間使用DataContractJsonSerializer類別實作序列化

序列化類別:People使用DataContractJsonSerializer類別實作序列化

序列化類別:People

rerree

化反序列化

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

szJson輸出結果:{"Id":1,"Name":"小白"}

可以使用IgnoreDataMember:指定該成員不是資料協定的一部分且沒有進行序列化, DataMember:定義序列化屬性參數,使用DataMember屬性標記欄位必須使用DataContract標記類別否則DataMember標記不起作用。

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

輸出結果: {"id":1}

🎜更多淺析JSON序列化與反序列化相關文章請關注PHP中文網! 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn