C#解析JSON数组元素

时间:2013-04-02 15:22:32

标签: c# windows

我正在使用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);
            }

1 个答案:

答案 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_urlparent_url吗?