擴充方法對json序列化及還原序列化

來源:互聯網
上載者:User

標籤:contract   序列化   returns   catch   ons   tps   字元   hfs   collect   

       this+類型名+變數名,.NET 3.0 之後新增的一種特性,叫“擴充方法”。

       int類型變數都能調用toString()方法,將int類型變數轉換成string型變數;如果需要更改轉換的形式,比如將int類型變數轉換成指定格式的字串,並且這種方法調用非常頻繁,可以編寫擴充方法。擴充方法能夠向現有類型“添加”方法,而無需建立新的衍生類別型、重新編譯或以其他方式修改原始類型。擴充方法是一種特殊的靜態方法,但可以像擴充類型上的執行個體方法一樣進行調用。

      例如下列代碼:

namespace ExtensionMethods{    public static class MyExtensions    {        public static int zzyhost(this String str)        {                     return 0;        }    }   }

  那麼在其他類下只需要 using ExtensionMethods引入該命名空間;,所有 string 類型的對象就都擁有了 zzyhost() 這個方法,而無需重寫一個 string 類,使用時直接調用:

string s = "Hello zzyhost";int i = s.zzyhost();

       在做web項目時,經常要將對象轉json,所以可以將轉換方法寫成擴充方法,在轉換時直接調用。

擴充方法:

/********************************************************************************** Title:      SerializerUtil** Author:     dwx** E-mail       [email protected]** Date:       2017/5/12 9:12:34** CLR:        4.0.30319.34209** Copyright:  Copyright (c) 2017** Company:    GDwinning ** Description:json序列化擴充方法*********************************************************************************/using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Runtime.Serialization.Json;using System.Text;using System.Threading.Tasks;using System.Runtime.Serialization;namespace BLL.Tool{    /// <summary>    /// 擴充方法,json序列化    /// </summary>    public static class JsonSerializerUtil    {        /// <summary>        /// json字串還原序列化        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="jsonStr"></param>        /// <returns></returns>        public static T FromJson<T>(this string jsonStr)        {            try            {                DataContractJsonSerializer seri = new DataContractJsonSerializer(typeof(T));                using (MemoryStream memory = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))                {                    T jsonObj = (T)seri.ReadObject(memory);                    return jsonObj;                }            }            catch            {                return default(T);//如果有異常會返回null            }        }        /// <summary>        /// json序列化        /// </summary>        /// <param name="item"></param>        /// <returns></returns>        public static string ToJson(this object item)        {            try            {                DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType());                using (MemoryStream ms = new MemoryStream())                {                    serializer.WriteObject(ms, item);                    StringBuilder sb = new StringBuilder();                    sb.Append(Encoding.UTF8.GetString(ms.ToArray()));                    return sb.ToString();                }            }            catch (Exception ex)            {                return "異常資訊:" + ex.Message;            }        }    }}

 調用擴充方法樣本:

result res=new result();string data=null;//對象序列化data = res.ToJson();//json字串還原序列化result newRes=new result();newRes=data.FromJson<result>();

  

擴充方法對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.