Невозможно получить данные Json из привязки удаленного сервера к объекту в asp.net mvc

Я разрабатываю Asp.Net приложение mvc. В моем приложении мне нужно получить объект json с удаленного сервера. Я использую для этого веб-клиент. Но это дает мне ошибку. Мой сценарий ниже.

У меня есть этот url

http://graph.facebook.com/{fb_id}/picture?width=200&height=200&redirect=false

Когда я получаю доступ из браузера, он возвращает что-то вроде этого

Введите описание изображения здесь

Поэтому я пытаюсь получить эти данные как json, а затем сериализовать их обратно. Поэтому я строю два класса, как показано ниже, чтобы связать эти данные.

public class FacebookAvatarResponse
    {
        [JsonProperty("data")]
        public FacebookAvatarData Data { get; set; }
    }

    public class FacebookAvatarData
    {
        [JsonProperty("height")]
        public int Height { get; set; }
        [JsonProperty("width")]
        public int Width { get; set; }
        [JsonProperty("is_silhouette")]
        public bool IsSilhouette { get; set; }
        [JsonProperty("url")]
        public string Url { get; set; }
    }

В controll я построил метод действия

 [AllowAnonymous]
        public JsonResult Test(string avatarDataUrl)
        {
            using (WebClient webClient = new WebClient())
            {
                string data = webClient.DownloadString(avatarDataUrl);
                return Json(JsonConvert.DeserializeObject<FacebookAvatarResponse>(data),JsonRequestBehavior.AllowGet);
            }
        }

Как вы можете видеть, я получаю эти данные как json, а затем возвращаю как результат действия. Но когда я запрашиваю этот метод действия, передающий правильный url в качестве параметра, он дает мне эту ошибку.

Введите описание изображения здесь

Как получить данные JSON из привязки удаленного сервера к определенным классам?

1 ответ

  1. Возможно, вы не передаете JSON в DeserializeObject.

    JsonConvert.DeserializeObject принимает значение JSON.

    Проверьте, что ваши данные должны быть в формате json для десериализации.

    Json(JsonConvert.DeserializeObject<FacebookAvatarResponse>(data),
         JsonRequestBehavior.AllowGet);