在ASP.NET MVC3中显示json数据?

时间:2012-07-06 14:45:11

标签: c# asp.net asp.net-mvc json facebook-graph-api

我正在开发Facebook应用程序,其中我正在以

获取用户的朋友详细信息
dynamic result = client.Get("me/friends"); //it gives friend's data for id, name

它在

中提供数据
{
  "data": [
    {
      "name": "Steven", 
      "id": "57564897"
    }, 
    {
      "name": "Andy", 
      "id": "8487581"
    }
}

现在我想解析这些数据并存储它。所以我可以按照我的方式使用它。

我试图使用 JSON.NET 解析它并在视图中显示数据

var model = JsonConvert.DeserializeObject<FriendDetail>(result.data);
在课堂上

public class FriendDetail
    {
        public string id { get; set; }
        public string name { get; set; }

        public FriendDetail(string i, string n)
        {
            id = i;
            name = n;
        }
    }

现在我可以将视图传递为“return View(model)

但它给了我错误:The best overloaded method match for 'Newtonsoft.Json.JsonConvert.DeserializeObject<FBApp.Models.FBFriendDetail>(string)' has some invalid arguments

为什么会出现此错误?

请帮我解析这个json数据。

还有更好的方法来解析和存储 json数据,然后在视图中显示吗?

请帮忙

1 个答案:

答案 0 :(得分:4)

您正尝试将FriendDetail个对象的列表反序列化为单个FriendDetail对象。请尝试以下方法:

var jObject = JObject.Parse(result.ToString());
var model = JsonConvert.DeserializeObject<List<FriendDetail>>(jObject["data"].ToString());

修改

这是我测试它的方式:

var result = 
    @"{
        ""data"": [
        {
            ""name"": ""Steven"", 
            ""id"": ""57564897""
        }, 
        {
            ""name"": ""Andy"", 
            ""id"": ""8487581""
        }]
    }";

var jObject = JObject.Parse(result.ToString());
var model = JsonConvert.DeserializeObject<List<FriendDetail>>(jObject["data"].ToString());