我正在使用Facebook C#sdk用于桌面应用。我正在获取动态对象,然后提取名称,id等
dynamic result = fb.Get("/me");
string name=result.name;
现在问题是我无法提取工作信息或喜欢的团队等。我已经使用了所需的权限,但无法处理动态对象。它采用以下格式:
"languages": [
{
"id": "106502622718539",
"name": "Bānglā"
},
{
"id": "106059522759137",
"name": "English"
}
],
http://developers.facebook.com/tools/explorer/
经过多次尝试和搜索才得到它们。一无所获。我读过它以数组的形式出现。请帮助通过C#代码提取这些信息..........
答案 0 :(得分:2)
看起来你可能想要:
dynamic result = fb.Get("/me");
foreach (dynamic language in result.languages)
{
Console.WriteLine("{0}: {1}", language.name, language.id);
}
不能说我自己使用过Facebook SDK。
答案 1 :(得分:1)
以下是关于如何在Facebook C#SDK / SimleJson中使用json数据的黄金法则(内部Facebook C#SDK使用SimpleJson进行json序列化/反序列化http://simplejson.codeplex.com/)。
有三种可能的类型:Array,Json Object和privimitive类型。
由于langauges是一个数组,你可以将它用作IList< object>并在Json Skeet提到的for循环中使用它。您还可以获得其他IList< T>的好处。索引器和数组的不同属性等功能。
dynamic result = fb.Get("/me");
var langauges = result.languages;
var length = languages.Length;
var lang1 = languages[0];
var lang1Id = lang1["id"];
var lang1Name = lang1["name"];
var lang2 = langauges[1];
var lang2Id = lang2.id;
var lang2Name = lang2.name;
因为lang1和lang2是一个JsonObject,你可以使用像lang1 [“id”]这样的索引器,就像你在IDictionary< string,object>中一样。或者更容易使用lang1.id。