首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问“实体类一个反序列化的方法”如何写成一个通用的方法,将实体类传过来

2013-10-22 
请教“实体类一个反序列化的方法”怎么写成一个通用的方法,将实体类传过来请教:以下这两个方法完全一样,就是

请教“实体类一个反序列化的方法”怎么写成一个通用的方法,将实体类传过来
请教:以下这两个方法完全一样,就是每一个实体类一个反序列化的方法,怎么写成一个通用的方法,将实体类传过来使用?

public static List<BaseServiceRef.tbasemenufunction> Deserialize_MenuFunc(string _JsonText)
        {
            string s = ReleaseXmlTag(_JsonText);
            List<BaseServiceRef.tbasemenufunction> _Test = new List<BaseServiceRef.tbasemenufunction>();
            DataContractJsonSerializer _Json = new DataContractJsonSerializer(_Test.GetType());
            byte[] _Using = System.Text.Encoding.UTF8.GetBytes(s);
            System.IO.MemoryStream _MemoryStream = new System.IO.MemoryStream(_Using);
            _MemoryStream.Position = 0;

            _Test = (List<BaseServiceRef.tbasemenufunction>)_Json.ReadObject(_MemoryStream);
            return _Test;
        }
        public static List<BaseServiceRef.tbasefunctiongrant> Deserialize_UserGrant(string _JsonText)
        {
            string s = ReleaseXmlTag(_JsonText);
            List<BaseServiceRef.tbasefunctiongrant> _Test = new List<BaseServiceRef.tbasefunctiongrant>();
            DataContractJsonSerializer _Json = new DataContractJsonSerializer(_Test.GetType());
            byte[] _Using = System.Text.Encoding.UTF8.GetBytes(s);
            System.IO.MemoryStream _MemoryStream = new System.IO.MemoryStream(_Using);
            _MemoryStream.Position = 0;

            _Test = (List<BaseServiceRef.tbasefunctiongrant>)_Json.ReadObject(_MemoryStream);
            return _Test;
        }
反序列化的方法
[解决办法]
可以用泛形:


public static T JsonDeserialize<T>(string json)
{
    DataContractJsonSerializer zer = new DataContractJsonSerializer(typeof(T));
    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
    {
        return (T)zer.ReadObject(ms);
    }
}

[解决办法]
推荐使用Newtonsoft.Json

热点排行