动态对象处理问题Facebook c# sdk

本文关键字:sdk Facebook 处理问题 对象 动态 | 更新日期: 2023-09-27 18:08:02

我正在使用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#代码提取这些信息..........

动态对象处理问题Facebook c# sdk

看起来你可能想:

dynamic result = fb.Get("/me");
foreach (dynamic language in result.languages)
{
    Console.WriteLine("{0}: {1}", language.name, language.id);
}

我不能说我自己使用过Facebook SDK。

关于如何在Facebook c# SDK/SimleJson中使用json数据的黄金法则(Facebook c# SDK内部使用SimpleJson进行json序列化/反序列化http://simplejson.codeplex.com/)。

有3种可能的类型:数组,Json对象和基本类型。

  • Array:可以转换为IList或IList
  • JsonObject:键值对- dictionary<string,>
  • 基本类型:bool、string、long和double。

由于languages是一个数组,您可以将其用作IList并在Json Skeet中提到的for循环中使用它。您还可以受益于其他ilist特性,例如索引器和数组的不同属性。

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"]这样的索引器,就像你在字典<string,object>中做的那样,或者更容易使用lang1.id。