Я пытаюсь десериализовать поток Json.Я работаю в Visual Studion для Windows Phone 7. Вот код, который я использую:
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);
}
Как видите, я звоню в мой веб-сервис, который дает мне ответ.Затем вызывается асинхронный метод для обработки веб-запроса и получения возвращенных данных.Наконец, метод antoher выполняет сериализацию этих данных и возвращает список Person.
Конечно, существует класс "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"}
]
}
Спасибо,
С уважением