【发布时间】:2011-11-20 20:07:35
【问题描述】:
我确信这个问题已经被问了一遍又一遍,但由于某种原因,我仍然无法让它发挥作用。
我想反序列化一个包含单个成员的 JSON 对象;一个字符串数组:
{"results" : ["a", "b"]}
这是我要反序列化的类:
public class Whatever {
[DataMember(Name = "results")]
public string[] Results { get; protected set; }
}
这是反序列化方法:
private static T Deserialize<T>(string json)
{
var instance = Activator.CreateInstance<T>();
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
var serializer = new DataContractJsonSerializer(instance.GetType());
return (T)serializer.ReadObject(ms);
}
}
像Deserialize<Whatever>("{\"results\" : [\"a\", \"b\"]}") 这样的调用返回Whatever 的初始化实例,但Results 数组仍保留null。
Whatever的结构有问题吗?
【问题讨论】:
-
你不需要
var instance = Activator.CreateInstance<T>();使用typeof(T)