读书人

请问“实体类一个反序列化的方法”如何

发布时间: 2013-10-22 16:17:03 作者: rapoo

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

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

读书人网 >C#

热点推荐