簡體   English   中英

嘗試在C#中反序列化JSON時出現InvalidCastException

[英]InvalidCastException while trying to deserialize JSON in C#

我正在嘗試反序列化Json流。 我在Windows Phone 7的Visual Studion下工作。這是我正在使用的代碼:

    public Accueil()
    {
        InitializeComponent();
        string baseUri = "http://path/to/my/webservice";
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(baseUri));
        request.BeginGetResponse(new AsyncCallback(ReadCallback), request);
    }

    private void ReadCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
        using (StreamReader streamReader1 = new StreamReader(response.GetResponseStream()))
        {
            string returnedString= streamReader1.ReadToEnd();
            using (MemoryStream mStream = new MemoryStream(Encoding.Unicode.GetBytes(returnedString)))
            {
                List<Person> persons = new List<Person>();
                persons= returnResult(mStream);
            }


        }
    }

    private List<Person> returnResult(MemoryStream mStream)
    {
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<Person>));
        return (List<Person>)serializer.ReadObject(mStream);
    }

如您所見,我打電話給我的網絡服務給我一個回復。 然后,調用異步方法來處理webrequest並獲取返回的數據。 最后,antoher方法對該數據進行serilize並返回一個Person列表。

當然,還有一個“人”類:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

問題是在“returnResult”方法中返回了無效的強制轉換錯誤:

InvalidCastException

在那一行:

return (List<Person>)serializer.ReadObject(mStream);

你對退回的錯誤有所了解嗎? 我能做什么?

這是一個Json樣本:

{
  "Persons" : 
    [
      {"FirstName":"Foo","LastName":"Bar"},
      {"FirstName":"Hello","LastName":"World"}
    ]
}

謝謝,

問候

(老問題,但為什么不回答:))

您的Json與人員名單不符,但只有1個包含財產人的對象(這是一份人員名單)

喜歡:

public class AllPeople {
   public List<Person> Persons { get;set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM