使用我的课程时出现此错误。
错误
期望来自命名空间“”的元素“根”。遇到名称为“”的“无”,命名空间
我的课
[DataContract]
public class EntryData
{
[DataMember]
public string EntryId { get; set; }
[DataMember]
public string EmailAddress { get; set; }
[DataMember]
public string StatusCode { get; set; }
[DataMember]
public string TotalVoteCount { get; set; }
public static T Deserialise<T>(string json)
{
var obj = Activator.CreateInstance<T>();
using (var memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
memoryStream.Position = 0;
var serializer = new DataContractJsonSerializer(obj.GetType());
obj = (T)serializer.ReadObject(memoryStream); // getting exception here
return obj;
}
}
}
用法
string responseJson = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();
var results = EntryData.Deserialise<EntryData>(response)
我在网上看到它与memoryStream position
BUT 有关,你可以看到我将它设置为开头。
请帮忙。
Json 去处理程序
传入 JSON 时,我没有设置 StatusCode 或 TotalVoteCount。我认为这不是问题所在。
{
"EntryId":"43",
"EmailAddress":"test@email.com"
}
回答
我现在使用的是这个,而不是在我的课堂上使用 Deserialize 方法。
//commented out this code.
string responseJson = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();
var results = EntryData.Deserialise<EntryData>(response)
// this is the way to go using JavaScriptSerializer
var serializer = new JavaScriptSerializer();
var results = serializer.Deserialize<EntryData>(response);