我正在使用VS 2012中的Windows 8商店应用,以及C#和XAML的新用户。使用JsonArray解析Json feed如何从另一个数组中的数组中获取元素?
[
{
"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中工作,但是我得到一个错误:
无法将带有[]的索引应用于“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);
}
答案 0 :(得分:1)
你正在迭代错误的变量。应该是:
var roles = theItem["roles"].GetArray();
foreach (var role in roles)
{
feedItem.ContentUrl = new Uri(role.GetObject()["item_url"].GetString());
}
您的输入JSON字符串中也没有content_url
元素。不应该是item_url
或parent_url
吗?