ASP.NET Json - 访问数据问题

时间:2010-12-21 19:45:26

标签: c# json facebook

首先,我要说的是你们很棒。我在stackoverflow上找到了很多帮助。所以保持好工作。

好的,这是我的问题。我正在尝试为facebook编写应用程序(只是尝试现在=))。 我需要一些JSON的帮助。

所以这是我的HomeController.cs的一部分,没什么特别的。

dynamic me2 = app2.Api("/me/feed");
ViewData["data"] = me2.data;

这是我的个人资料.aspx。它工作得很好,它写出了我的Facebook墙上的所有帖子。

<% foreach (JsonObject item2 in (ViewData["data"] as Facebook.JsonArray))
      { %>
        <li>
            <%=item2["message"] %>
        </li>
    <%} %>

好的,现在是问题的时候了。

"data": [
      {
         "id": "100001721189066_164115910298999",
         "from": {
            "name": "Poiskus Nulaena",
            "id": "100001721189066"
         },
         "message": "bleble",
         "actions": [
            {
               "name": "Comment",
               "link": "http://www.facebook.com/100001721189066/posts/164115910298999"
            },

因为ViewData [“data”] = me2.data;在.cs文件中,.aspx文件返回消息(在此示例中为bleble)。但是如何访问“actions”数组中的“link”或“name”元素。我试过了:

-ViewData [“actions”] = me2.actions; - &gt;不起作用

-ViewData [“actions”] = me2.data.actions; - &GT;不工作

-nested foreach在我的案例中不起作用

任何帮助都会有用:P

谢谢

塞巴斯蒂安

1 个答案:

答案 0 :(得分:2)

Data是一个JSON数组,而不是一个对象。您是在寻找第一个项目的动作,还是所有项目的集合?我不确定这对动态对象的效果如何,但这应该给你正确的想法:

var actions = m2.data.Select(d => d["actions"]);
var actionsFromFirstItem = actions.First();

修改

我不熟悉您正在使用的Facebook API,但我将以JSON .NET为例。这段代码:

var allActions = from d in jsonObject["data"]
                from a in d["actions"]
                select new {name = a.Value<string>("name"), link = a.Value<string>("link")};

...会给你一组匿名对象,代表阵列中所有帖子的所有动作,但它们不会绑定到任何特定的帖子。您可以看到我如何将jsonObject [“data”]视为一个集合,并将每个元素的“actions”列为另一个集合。

因为你还没有真正定义你想要的结果,所以我现在可以帮助你。我对facebook API了解不多,但似乎你最好使用强类型var,并通过字符串访问其成员,而不是使用动态对象。祝你好运。