我正在开发一个Asp.Net mvc应用程序。在我的应用程序中,我需要从远程服务器检索json对象。我正在使用Web客户端。但它给了我错误。我的情况如下。
我有这个网址
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; }
}
在控制中,我构建了一个动作方法
[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数据?
可能你没有将JSON传递给DeserializeObject。
JsonConvert.DeserializeObject
取JSON值。
检查您的数据应采用json格式进行反序列化。
Json(JsonConvert.DeserializeObject<FacebookAvatarResponse>(data),
JsonRequestBehavior.AllowGet);