2010-12-30 13 views
0

GoogleのジオコーディングAPIを使用して、ジオコード位置情報を含むJSON文字列を取得しています。ここで私はGoogleから戻ってくる文字列です。googleジオコーディングでnet.sf.json.JSONObjectを使用する場合のjava.lang.ClassCastExceptionの取得

{ 
    "status": "OK", 
    "results": [ { 
"types": [ "street_address" ], 
"formatted_address": "550 Susong Dr, Morristown, TN 37814, USA", 
"address_components": [ { 
    "long_name": "550", 
    "short_name": "550", 
    "types": [ "street_number" ] 
}, { 
    "long_name": "Susong Dr", 
    "short_name": "Susong Dr", 
    "types": [ "route" ] 
}, { 
    "long_name": "Morristown", 
    "short_name": "Morristown", 
    "types": [ "locality", "political" ] 
}, { 
    "long_name": "Morristown", 
    "short_name": "Morristown", 
    "types": [ "administrative_area_level_3", "political" ] 
}, { 
    "long_name": "Hamblen", 
    "short_name": "Hamblen", 
    "types": [ "administrative_area_level_2", "political" ] 
}, { 
    "long_name": "Tennessee", 
    "short_name": "TN", 
    "types": [ "administrative_area_level_1", "political" ] 
}, { 
    "long_name": "United States", 
    "short_name": "US", 
    "types": [ "country", "political" ] 
}, { 
    "long_name": "37814", 
    "short_name": "37814", 
    "types": [ "postal_code" ] 
} ], 
"geometry": { 
    "location": { 
    "lat": 36.2422740, 
    "lng": -83.3219410 
    }, 
    "location_type": "ROOFTOP", 
    "viewport": { 
    "southwest": { 
     "lat": 36.2391264, 
     "lng": -83.3250886 
    }, 
    "northeast": { 
     "lat": 36.2454216, 
     "lng": -83.3187934 
    } 
    } 
} 

}] }

私はJavaで次のコードを実行するときしかし、私は "とjava.lang.ClassCastExceptionを:net.sf.json.JSONObjectと互換性がないjava.lang.Stringで" 取得エラー。

URL url = new URL(URL + "&address=" + URLEncoder.encode(address, "UTF-8") + "&signature=" + key); 
    URLConnection conn = url.openConnection(); 
    ByteArrayOutputStream output = new ByteArrayOutputStream(1024); 
    IOUtils.copy(conn.getInputStream(), output); 
    output.close(); 

    GAddress gaddr = new GAddress(); 
    JSONObject json = JSONObject.fromObject(output.toString()); 
    JSONObject placemark = (JSONObject) query(json, "Placemark[0]"); 

なぜエラーが発生するのかわかりません。 Googleの応答は、私にとって有効なJSON文字列のように見えます。他に誰もこれに問題があった?なんらかの理由でGoogleとうまくやらないと、net.sf.jsonのほかに何かを使うことに私は気をつけています。

おかげで、

アンドリュー

+0

'query(json、Placemark [0] ')'は 'String'を返しますか? – Nishant

+0

"System.out.println(query(json、Placemark [0]")。getClass()); "最後の行の前に、java.lang.Stringを返すと言います。 –

+0

)今、あなたは何をすべきかを知っています。 'query()'からJSONObjectを返すか、キャストと代入を削除してください。 – Nishant

答えて

1

あなたが戻ってあなたの元の関数呼び出しから文字列を取得しているように見えます。確かに、追加することができます

System.out.println(query(json、 "Placemark [0]"));

最後の行の直前。これはあなたが扱っているオブジェクトのタイプを与えます。

+0

それはjava.lang.Stringだと言います。 –

+0

私が見ていたコードは、Googleの古いバージョンのレスポンスを使用していて、予想外の結果が出ていたようです。私はGoogleからの回答を受け取り、型の不一致がどこで発生しているのか把握することができました。みんなありがとう。 –

関連する問題