Я недавно переключился с использования SOAP на JSON. Теперь у меня проблема с производительностью, потому что для десериализации потока JSON на моем устройстве WP7 требуется около 26 секунд.
Поэтому я подумал об использовании Json.net вместо DataContractJsonSerializer.
Однако я не смог найти много информации об этом.
Я использую веб-клиент, а затем OpenReadAsync, поэтому у меня есть поток как e.Result.
Как я могу превратить этот поток в объект, используя Json.net?
Могу ли я вместо этого использовать DownloadStringAsync?
Это код, который в настоящее время работает:
//string URL = ""; //Actual URL to JSON is here
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
client.OpenReadAsync(new Uri(URL, UriKind.Absolute));
И обработчик события:
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(JSONObject), null);
JSONObject data = serializer.ReadObject(e.Result) as JSONObject;
}
JSONObject является объектом ответа конечной точки SOAP службы, но обе конечные точки возвращают одинаковые данные.
Это прекрасно работает, и я могу продолжать анализировать данные так же, как я анализировал ответ SOAP, но я бы хотел, чтобы он десериализовался быстрее.