2013-04-02 63 views
0

我正在开发VS 2012中的Windows 8商店应用程序,并且新增了C#和XAML。使用JsonArray解析Json订阅源如何从另一个数组中的数组中获取元素?C#解析JSON数组元素

[ 

    { 
     "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", 
      } 

     ], 
    } 
] 

我想另一个的foreach将原来的foreach内工作,但我得到一个错误:

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()); 
      } 

此外,在您的输入JSON字符串中没有content_url元素。它不应该是item_urlparent_url

+0

是的,它是item_url,我刚刚改变它。 –

+0

我已经更新了我的答案。现在检查。 – MarcinJuraszek

+0

我改变了变量,我会再次更改它们以匹配我的原始代码。非常感谢,你摇滚! –