Bing Maps REST сервисы JSON ошибка десериализации

1

Я пытаюсь получить маршруты проезда через службы BEST RING Maps. Ответ, похоже, проходит, но при десериализации в JSON с предоставленными Контрактами данных возникает следующее исключение:

Элемент ': элемент' содержит данные от типа, который сопоставляется с именем ' http://schemas.microsoft.com/search/local/ws/rest/v1:Route '. Deserializer не знает ни одного типа, который сопоставляется с этим именем. Подумайте об использовании DataContractResolver или добавьте тип, соответствующий "Маршруту" в список известных типов, например, используя атрибут KnownTypeAttribute или добавив его в список известных типов, переданных DataContractSerializer.

Ссылка MSDN, с которой я работаю, доступна по адресу: http://msdn.microsoft.com/en-us/library/jj819168.aspx

Я скопировал необходимые DataContracts из ссылки в нижней части образца, но не могу понять, почему это исключение происходит при десериализации. Вот код, который я выполняю:

private async void btnGetRoute_Click(object sender, RoutedEventArgs e)
    {
            string locationFrom = "100 Commonwealth Ave Boston MA";
            string locationTo = "100 Yawkey Way Boston MA";
            string url = string.Format("http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0={0}&wp.1={1}&key={2}", locationFrom, locationTo, ConfigurationManager.AppSettings["BingMapsKey"]);
            Uri drivingRouteRequest = new Uri(url);

            Response response = await GetResponse(drivingRouteRequest);
    }

    private async Task<Response> GetResponse(Uri uri)
    {
        HttpClient client = new System.Net.Http.HttpClient();
        var response = await client.GetAsync(uri);

        using (var stream = await response.Content.ReadAsStreamAsync())
        {
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Response));
            return ser.ReadObject(stream) as Response;
        }
    }

Есть предположения?

  • 0
    Есть ли успехи в этом? Я заметил ту же проблему [здесь] [1]. Том [1]: stackoverflow.com/questions/25297238/…
  • 0
    @ Том нет ... Мы используем Telerik. Вместо этого я смог проложить маршрут проезда. Я не пробовал этот метод еще раз, поэтому не могу предоставить что-либо еще прямо сейчас.
Теги:
rest
bing-maps
bing-api

2 ответа

1

Команда Bing Maps знает об этом и вскоре обновит документацию. Проблема в том, что возвращается новый объект, где, как и раньше, мы знали только имя свойства. У меня есть обновленный набор контрактов данных в одном из моих проектов, который вы можете найти здесь: http://mapstoolbox.codeplex.com/SourceControl/latest#Microsoft.Maps.Spatialtoolbox/Source/Microsoft.Maps.SpatialToolbox.Core/Bing/Services/RestServices.cs

  • 0
    Доступна ли информация о том, что обновленная документация будет доступна в ближайшее время по ссылке где-то на сайте MSDN, или вы получили информацию из частного билета поддержки?
  • 0
    Я работаю в команде Bing Maps и создал документацию с контрактом на основе данных, полученных в ответах служб. Я не был в команде инженеров, не создавал сервисы и должен был выяснить контракты данных методом проб и ошибок.
Показать ещё 1 комментарий
0

Этот поток в MSDN подтверждает, что исходные классы от Microsoft не работают. Но если вы просто создаете свой собственный класс с помощью json2csharp.com и используете его для десериализации, он работает.

Том

Ещё вопросы

Сообщество Overcoder
Наверх
Меню