-1

この URL: 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

まず第一に、コードをデバッグするべきではありませ。Ctrl+F5 の代わりに F5 を使用してアプリケーションを実行するだけで、例外が発生したときにコードと変数を調べると、エラーが見つかります。

だから、あなたはエラーが何であるかを知っています. 右側のオブジェクトは型であり、型ではないため、ループ内でjson["meta"]["view"]toの結果をキャストすることはできません。JObjectJPropertyJObject type

ループを次のように変更するだけです。

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

そして、それはうまくいくはずです。

次は自分で問題を解いてみてください。そんな簡単な質問はここではできません。

于 2013-11-13T08:27:30.590 に答える