проблема с обработкой динамического объекта Facebook C # SDK - PullRequest
1 голос
/ 10 сентября 2011

Я использую Facebook C # SDK для настольного приложения. Я получаю динамический объект, а затем извлекаю имя, идентификатор и т. Д.

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 # ..........

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Похоже, вы захотите:

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

Не могу сказать, что я сам использовал Facebook SDK.

1 голос
/ 10 сентября 2011

Вот золотое правило о том, как использовать данные json в Facebook C # SDK / SimleJson (внутренне Facebook C # SDK использует SimpleJson для сериализации / десериализации json http://simplejson.codeplex.com/).

Существует 3 возможных типа: Array, JsonТипы объектов и привилегий.

  • Массив : можно преобразовать в IList или IList
  • JsonObject : ключпара значений - IDictionary
  • типы примитивов : bool, string, long и double.

Поскольку langauges - это массив, вы можете использовать его как IList и использовать егов цикле, как упомянуто Json SkeetВы также получаете преимущества других функций 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"]как вы делаете для IDictionaryили намного проще использовать lang1.id.

...