我在使用我的課程時遇到此錯誤。DataContractJsonSerializer異常
錯誤期待元件從命名空間 '根' '' ..遇到 '無' 與 名 '',命名空間
我類
[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;
}
}
}
USAGE
string responseJson = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();
var results = EntryData.Deserialise<EntryData>(response)
我在網上看到它與memoryStream position
有關,但你可以看到我將它設置爲開頭。
請幫忙。
的Json去處理程序
在通過JSON的時候,不設置的StatusCode或TotalVoteCount。我不認爲這是問題,但。
{
"EntryId":"43",
"EmailAddress":"[email protected]"
}
ANSWER
而不是使用在我的類反序列化方法我現在這正在使用的。
//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);
你可以發佈你的JSON嗎?我認爲這可能是由於您的JSON名稱與您的C#類和屬性名稱不匹配造成的。這會導致序列化程序不知道如何在兩者之間進行轉換。 –
看到我的json請求有問題,請 –
謝謝,嗯......我當時沒有想法。我同意你離開這些領域不應該導致問題。默認情況下,DataMember的IsRequired屬性爲false,所以我認爲它應該沒問題。 –