轉載:在ASP.net 3.5中 用JSON序列化對象(兩種方法)

來源:互聯網
上載者:User

標籤:scripts   create   time   擷取   int   res   for   命名   ext   

    asp.net3.5中已經整合了序列化對象為json的方法。

    1:System.Runtime.Serialization.Json;
    2:System.Web.Script.Serialization兩個命名空間下的不同方法進行序列化和還原序列化。

    第一種方法:System.Runtime.Serialization.Json 

public class JsonHelper
    {
        /// <summary>
        /// 產生Json格式
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string GetJson<T>(T obj)
        {
            DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
            using (MemoryStream stream = new MemoryStream())
            {
                json.WriteObject(stream, obj);
                string szJson = Encoding.UTF8.GetString(stream.ToArray()); return szJson;
            }
        }
        /// <summary>
        /// 擷取Json的Model
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="szJson"></param>
        /// <returns></returns>
        public static T ParseFromJson<T>(string szJson)
        {
            T obj = Activator.CreateInstance<T>();
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
                return (T)serializer.ReadObject(ms);
            }
        }
    }
public class topMenu
{
    public string id { get; set; }
    public string title { get; set; }
    public string defaulturl { get; set; }
}
            topMenu t_menu = new topMenu()
            {
                id = "1",
                title = "全域",
                defaulturl = "123456"
            };
            List<topMenu> l_topmenu = new List<topMenu>();
            for (int i = 0; i < 3; i++)
            {
                l_topmenu.Add(t_menu);
            }
            Response.Write(JsonHelper.GetJson<List<topMenu>>(l_topmenu));


     輸出結果為:
       [{"defaulturl":"123456","id":"1","title":"全域"},{"defaulturl":"123456","id":"1","title":"全域"},{"defaulturl":"123456","id":"1","title":"全域"}] 
 
    下面利用上面ParseFromJson方法讀取Json
     輸出結果為:全域
 

 

 string szJson = @"{""id"":""1"",""title"":""全域"",""defaulturl"":""123456""} ";
      topMenu t_menu2 = JsonHelper.ParseFromJson<topMenu>(szJson);
      Response.Write(t_menu2.title);


      第二種方法:System.Web.Script.Serialization(引用System.Web.Extensions.dll)還是用到上面方法中JSON屬性的類,序列化方式不一樣。         

            topMenu t_menu = new topMenu()
            {
                id = "1",
                title = "全域",
                defaulturl = "123456"
            };

            List<topMenu> l_topmenu = new List<topMenu>(); 

            for (int i = 0; i < 3; i++)
            {
                l_topmenu.Add(t_menu);
            }

      
      下面用這種方式輸出:

 

      JavaScriptSerializer jss = new JavaScriptSerializer(); 
      Response.Write( jss.Serialize(l_topmenu )); 

      
      輸出結果是相同的

      [{"defaulturl":"123456","id":"1","title":"全域"},{"defaulturl":"123456","id":"1","title":"全域"},{"defaulturl":"123456","id":"1","title":"全域"}]

      JavaScriptSerializer中的Deserialize方法讀取Json

      string szJson = @"{""id"":""1"",""title"":""全域"",""defaulturl"":""123456""} ";
      topMenu toptabmenu = jss.Deserialize<topMenu>(szJson); 
      Response.Write( jss.Serialize(toptabmenu.title)); 

      
      輸出結果為:全域 

      綜上:兩種方法個有好處。一個比較靈活。[ScriptIgnore] ,可以讓JSON序列化忽略它從而不輸出。不被序列化。

 

轉載:在ASP.net 3.5中 用JSON序列化對象(兩種方法)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.