【发布时间】:2014-01-31 00:59:39
【问题描述】:
我试图在反序列化时重新创建一个对象。通过重新实现 Serialize 和 Deserialize 方法,以便我能够独立使用它们。由于我会将序列化对象存储在数据库中,因此我将无法访问对象的类型(类)。 问题是:有没有办法在没有对象类型的情况下反序列化和对象,只有它是 JSON 字符串?有什么方法可以从 JSON 字符串中获取它的类型?
方法如下:
DataContractJsonSerializer
public string Serialize(object aoObject)
{
MemoryStream stream = new MemoryStream();
DataContractJsonSerializer serializer = new DataContractJsonSerializer(aoObject.GetType());
serializer.WriteObject(stream, aoObject);
return Encoding.Default.GetString(stream.ToArray());
}
public object Deserialize(string asObject)
{
MemoryStream stream = new MemoryStream(Encoding.Default.GetBytes(asObject));
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(["the type of the object"]));
return serializer.ReadObject(stream);
}
JSON.NET
public string Serialize(object aoObject)
{
DefaultContractResolver dcr = new DefaultContractResolver();
dcr.DefaultMembersSearchFlags |= System.Reflection.BindingFlags.NonPublic;
JsonSerializerSettings jss = new JsonSerializerSettings();
jss.TypeNameHandling = TypeNameHandling.All;
jss.ContractResolver = dcr;
string asObject = JsonConvert.SerializeObject(loObject, jss);
}
public object Deserialize(string asObject)
{
["type of the object"] fake2 = JsonConvert.DeserializeObject(asObject);
}
【问题讨论】:
标签: c# asp.net json serialization