-1

我想解析这个网址:https ://data.cityofchicago.org/api/views/xzkq-xp2w/rows.json?search=rahm并在模拟器中显示数据。

我的代码是:

WebClient webClient = new WebClient();
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(downloadAboutCompleted);
webClient.OpenReadAsync(new Uri("https://data.cityofchicago.org/api/views/xzkq-xp2w/rows.json?search=rahm"), c);

private void downloadAlbumCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if (e.Error == null && !e.Cancelled)
    {
        using (StreamReader httpwebStreamReader = new StreamReader(e.Result))
        {
            var results = httpwebStreamReader.ReadToEnd();
            System.Diagnostics.Debug.WriteLine(results):
            var json = JObject.Parse(results);
            System.Diagnostics.Debug.WriteLine(json):

            foreach (JObject array in json["meta"]["view"])
            {
                JObject obj = JObject.Parse(array.ToString());
                string id= (string)obj["id"];
                string name= (string)obj["name"];

                MessageBox.Show(name);
            }
        }
    }
}

但我在以下行中遇到错误:

foreach (JObject array in json["meta"]["view"])

错误是:An exception of type 'System.InvalidCastException' occurred in PhoneApp1.DLL but was not handled in user code

提前致谢。

4

2 回答 2

0

您不能在 json["meta"]["view"] 中使用 foreach,因为它是 URL 中的 Json 对象。

 JObject obj = json["meta"]["view"];
                string id= (string)obj["id"];
                string name= (string)obj["name"];

                MessageBox.Show(name);

它会很好用

于 2013-11-18T11:25:46.390 回答
0

首先,我们不应该调试你的代码,应该。只需使用 F5 而不是 Ctrl+F5 运行您的应用程序,当引发异常时,检查代码和变量,您会发现错误。

所以,你知道错误是什么,它就在那里说:你正在做一个无效的演员表。您不能在循环中强制json["meta"]["view"]转换 to的结果,JObject因为右边的对象是JProperty类型,而不是JObject type.

只需将循环更改为:

foreach (JProperty property in json["meta"]["view"])

它应该工作。

请下次尝试自己解决问题,你不能在这里问这么简单的问题。

于 2013-11-13T08:27:30.590 回答