2010-12-30 4 views
0

Ich verwende die Google Geokodierungs-API, um eine JSON-Zeichenfolge mit geokodierten Standortinformationen abzurufen. Hier ist die Zeichenfolge, die ich von Google erhalten habe.Abrufen einer java.lang.ClassCastException bei Verwendung von "net.sf.json.JSONObject" mit Google-Geokodierung

{ 
    "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 
    } 
    } 
} 

}] }

Allerdings, wenn ich den folgenden Code in Java erhalte ich eine "java.lang.ClassCastException: java.lang.String unvereinbar mit net.sf.json.JSONObject" Error.

Ich bin mir nicht sicher, warum ich den Fehler bekomme. Die Google-Antwort sieht für mich wie eine gültige JSON-Zeichenfolge aus. Hat sonst noch jemand Probleme damit? Ich bin offen für etwas außer der net.sf.json, wenn es aus irgendeinem Grund nicht gut mit Google spielt.

Danke,

Andrew

+0

Gibt 'query (json," Placemark [0] ")' eine 'Zeichenfolge' zurück? – Nishant

+0

Wenn ich "System.out.println (Abfrage (json," Placemark [0] "). GetClass());" vor der letzten Zeile sagt es, dass es eine java.lang.String zurückgibt. –

+0

) so jetzt wissen Sie, was zu tun ist. Gib entweder JSONObject von query() zurück oder entferne das Casting und die Zuweisung. – Nishant

Antwort

1

Es aussieht wie Sie sind eine Zeichenfolge zurück von Ihrem ursprünglichen Funktionsaufruf zu bekommen. Um sicher zu sein, könnten Sie hinzufügen

System.out.println (Abfrage (Json, "Placemark [0]"). Klasse);

direkt vor der letzten Zeile. Dadurch erhalten Sie den Typ des Objekts, mit dem Sie es zu tun haben.

+0

Es heißt, es ist ein java.lang.String. –

+0

Offenbar verwendete der Code, den ich mir ansah, eine ältere Version der Antwort von Google und es wurden unerwartete Ergebnisse erzielt. Ich nahm die Antwort von Google und in der Lage, herauszufinden, wo die Typ-Mismatches auftraten. Danke Leute. –

Verwandte Themen