クラスを使用すると、このエラーが発生します。
エラー
名前空間 '' からの要素 'root' が必要です..名前 '' の 'None' が見つかりました、名前空間
私のクラス
[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);