首先,我要说的是你们很棒。我在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
谢谢
塞巴斯蒂安
答案 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
,并通过字符串访问其成员,而不是使用动态对象。祝你好运。