我正在尝试反序列化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 of List。
当然,有一个“人”类:
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 :(得分:1)
(老问题,但为什么不回答:))
您的Json与人员名单不符,但只有1个包含财产人的对象(这是一份人员名单)
像:
public class AllPeople {
public List<Person> Persons { get;set; }
}