2010-09-28 49 views
3

我試圖反序列化Json流。 我在Visual Studion工作的Windows Phone 7 這裏是我使用的代碼:這給了我一個響應嘗試反序列化C中的JSON時InvalidCastException

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); 
    } 

正如你所看到的,我打電話給我的web服務。然後,調用異步方法來處理webrequest並獲取返回的數據。最後,antoher方法使用這些數據並返回一個人員列表。

當然,有一個「人」類:

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"} 
    ] 
} 

謝謝

問候

+0

你可以發佈一些示例JSON字符串嗎? – 2010-09-28 15:33:24

+0

查看帖子。問候。 – Zakaria 2010-09-28 15:39:23

+0

你解決了這個問題嗎? – Phil 2011-05-31 19:13:20

回答

1

(老問題,但爲什麼不回答吧:))

您的JSON不匹配人員名單,但只有一個對象包含財產人員(這是一個人名單)

贊:

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