2013-04-02 5 views
0

Я работаю над приложением Windows 8 Store в VS 2012 и новым для C# и XAML. Использование JsonArray для анализа Json-фида, как я могу захватить элемент из массива в другом массиве?C# Parse JSON Array Elements

[ 

    { 
     "item_id": 2270978, 
     "item_title": "This is the title", 
     "roles": [ 

      { 
       "item_url": "http://www.blahblah.com/161089", 
       "parent_url": "http://www.blahblah.com", 
      }, 
      { 
       "item_url": "http://www.blahblah.com/469888", 
       "parent_url": "http://www.blahblah.com", 
      } 

     ], 
    } 
] 

Я думал, что другой Еогеасп будет работать в пределах первоначального Еогеаспа, но я получаю сообщение об ошибке:

Cannot apply indexing with [] to an expression of type 'Windows.Data.Json.IJsonValue'

  foreach (var item in items) 
      { 
       JsonObject theItem = item.GetObject(); 
       FeedItem feedItem = new FeedItem(); 

       feedItem.PubDate = System.DateTime.Now; 
       feedItem.Title = theItem["item_title"].GetString(); 
       feedItem.Author = "Me"; 
       feedItem.ItemId = (int)(theItem["item_id"].GetNumber()); 
       feedItem.Content = theItem["item_body"].GetString(); 
       feedItem.Link = new Uri(theItem["permalink_url"].GetString()); 

       var roles = theItem["roles"].GetArray(); 
/* TRIED LIKE THIS DOESN'T WORK 
       foreach (var role in roles) 
       { 
        feedItem.ContentUrl = new Uri(role["item_url"].GetString()); 
       } 
*/ 
       feed.Items.Add(feedItem); 
      } 

ответ

1

Вы итерация неправильных переменных. Должно быть:

  var roles = theItem["roles"].GetArray(); 
      foreach (var role in roles) 
      { 
       feedItem.ContentUrl = new Uri(role.GetObject()["item_url"].GetString()); 
      } 

Также нет content_url элемента во входной JSON строке. Не должно быть item_url или parent_url?

+0

Да, это item_url, я только что изменил его. –

+0

Я обновил свой ответ. Проверь это сейчас. – MarcinJuraszek

+0

Я изменил переменные вокруг, я буду менять их снова, чтобы соответствовать моему исходному коду. Большое спасибо, вы рок! –