熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

JSON序列化與反序列化

2013-11-13 10:39:59  來源: .NET編程 
以下是對JSON序列化與反序列化進行了詳細的分析介紹需要的朋友可以過來參考下  

  方法一引入SystemWebScriptSerialization命名空間使用 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();
            personnelId = ;
            personnelName = "小白";

  JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
            //執行序列化
            string r = jsonSerializerSerialize(personnel);

            //執行反序列化
            Personnel _Personnel = jsonSerializerDeserialize<Personnel>(r);
         }

  
r輸出結果{"Id":"Name":"小白"}
可以使用 ScriptIgnore屬性標記不序列化公共屬性或公共字段

復制代碼 代碼如下:
        public class Personnel
        {
            [ScriptIgnore]
            public int Id { get; set; }
            public string Name { get; set; }
        }

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

方法二引入 SystemRuntimeSerializationJson命名空間使用 DataContractJsonSerializer類實現序列化

  序列化類People

復制代碼 代碼如下:
        public class People
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }

  
執行序列化反序列化

復制代碼 代碼如下:
protected void Page_Load(object sender EventArgs e)
        {
            People people = new People();
            peopleId = ;
            peopleName = "小白";

  
            DataContractJsonSerializer json = new DataContractJsonSerializer(peopleGetType());
            string szJson = "";
            //序列化
            using (MemoryStream stream = new MemoryStream())
            {
                jsonWriteObject(stream people);
                szJson = EncodingUTFGetString(streamToArray());
            }
            //反序列化
            using (MemoryStream ms = new MemoryStream(EncodingUTFGetBytes(szJson)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People));
                People _people = (People)serializerReadObject(ms);
            }
         }

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

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

復制代碼 代碼如下:
[DataContract]
        public class People
        {
            [DataMember(Name = "id")]
            public int Id { get; set; }
            [IgnoreDataMember]
            public string Name { get; set; }
        }

  
輸出結果: {"id":}


From:http://tw.wingwit.com/Article/program/net/201311/14251.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.