2011-01-14 5 views
2

Допустим, у меня есть следующие JSONJSON Вложенный массив

{ 
    "data": [ 
     { 
     "from": { 
      "name": "aaa bbb", 
     }, 
     "actions": [ 
      { 
       "name": "Comment", 
       "link": "http://... 
      }, 
      { 
       "name": "Like", 
       "link": "http://.." 
      } 
     ], 
     }, 

И у меня есть

JSONObject wallData = helper.Get("/me/feed"); 
if (wallData != null) 
{ 
    var data = wallData.Dictionary["data"]; 
    List<JSONObject> wallPosts = data.Array.ToList<JSONObject>(); 
} 
foreach (Facebook.JSONObject wallItem in wallPosts) 
{ ... } 

Который хранит меня весь корм в wallData и объект «данные» в wallPosts. Итак, я могу получить доступ к wallItem.Dictionary["from"].Dictionary["name"], и я получаю «aaa bbb». Но я не могу попасть в массив действий The WallItem.Dictionary ["actions"]. Словарь ["name"] не работает.

Любая идея

ответ

1

Вам нужно сделать что-то вроде wallItem.Dictionary["actions"][0].Dictionary["name"], потому что «действия» является массивом.

+0

Хорошо ... поэтому я положил это в Foreach 'ViewData [" hm "] = wallItem.Dictionary [" actions "] [0] .Dictionary [" name "]. String;' Он подчеркивает меня ' wallItem.Dictionary ["actions"] [0] ', ошибка говорит« Невозможно применить индексирование с [] к выражению типа Facebook.JSONобъект « Любая идея – Sebastjan

+0

Я не знаю, как работает Facebook.JSON - возможно,' wallItem .Dictionary [ "действия"]. Array [0] .Dictionary [ "имя"] '? – Skilldrick

+0

Может быть (wallItem.Dictionary ["actions"]) ["name"] поможет. Бросьте, если необходимо ... – Mulki

0

На другой ноте ... его аккуратнее, если и непосредственно в класс ... как этот

var jSerializer = new JavaScriptSerializer(); 
var jsonObject = jSerializer.Deserialize<DataObject>(json); 

DataObject будет класс, который эмулирует ур данных JSON в строго типизированного класса. В зависимости от размера ur Json вам не придется использовать много строк в коде.

Смежные вопросы