2010-12-21 98 views
0

首先,让我简单地说,你们真棒。我在stackoverflow上找到了很多帮助。所以保持好的工作。ASP.NET Json - 访问数据问题

好的,这是我的问题。我试图写一个Facebook的应用程序(只是现在=))。 我需要JSON的帮助。

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

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

这是我的profile.aspx。它的工作完美,它写出我的脸谱墙上的所有帖子。

<% 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; - >不起作用

-ViewData [“actions”] = me2.data.actions; - >不工作或者

-nested的foreach在我的情况下不能正常工作

任何帮助将是有益的:P

谢谢

塞巴斯蒂安

+0

你使用的是什么json库? JSON .NET? – StriplingWarrior 2010-12-21 23:04:25

回答

2

数据是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以及通过字符串访问其成员,而不是使用动态对象会更好。祝你好运。

+0

感谢您的回复。但我无法实现它的工作。 事实上,我试图访问数组(数据)内的数组(行动)。哦,我试图让这个功能适用于多个墙柱。塞巴斯蒂安 – Sebastian 2010-12-21 20:30:20