我确定这个问题已经被一遍又一遍地询问了,但是由于某种原因,我仍然无法设法解决这个问题。
我想反序列化包含单个成员的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。
Deserialize<Whatever>("{\"results\" : [\"a\", \"b\"]}")
Whatever
Results
null
的结构有问题Whatever吗?
嗯,发布此消息后,我意识到我缺少以下DataContract属性的修饰Whatever:
DataContract
[DataContract] public class Whatever { [DataMember(Name = "results")] public string[] Results { get; protected set; } }
现在工作正常。