4

クラスを使用すると、このエラーが発生します。

エラー

名前空間 '' からの要素 '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);
4

2 に答える 2