Wie bekomme ich ein array aus einem JSONObject?

  • Antworten:4
Gelöschter Account
  • Forum-Beiträge: 80

21.03.2011, 19:50:00 via Website

Hallo,

ich weiß momentan nicht richtig weiter. Ich möchte ein Array aus einem JSONObject bekommen, in folgendem Bsp. den value von "coordinates":
1"geo": {
2 "type": "Point",
3 "coordinates": [
4 51.0353,
5 13.7363
6 ]
7 }

mein Ansatz sieht so aus:
1if (!(json_data.isNull("geo"))) {
2 double[] coordinates = new double[2];
3 JSONObject geo_data = json_data.getJSONObject("geo");
4 coordinates = (double[]) geo_data.get("coordinates");
5 }
Ich bekomme hier eine ClassCastException, weiß aber nicht wie ich das Array anders auslesen könnte.
Ich bin für jede Idee dankbar!

lg manu

Antworten
Bastian B
  • Forum-Beiträge: 47

22.03.2011, 09:41:48 via Website

Hi,

ich bin mit den JSONObjects nicht zu 100% vertraut, aber ich glaube so wie du es vorhast geht es in Tat nicht.

Als workaround würde ich "coordinates" als String auslesen und diesen dann selbst teilen und in dein gewünschtes Format konvertieren...

Grüße,
Bastian

** edit **
Alternativ (wenn du die Formatierung des JSOBObjects beeinflussen kannst?!) kannst du auch das Feld "coordinates" als eigenes JSOBObject formatieren und dort dann die einzelnen Werte als double's auslesen und in dein Array stecken.

— geändert am 22.03.2011, 09:47:31

Antworten
Gelöschter Account
  • Forum-Beiträge: 80

22.03.2011, 19:50:20 via Website

Hallo Bastian,

und vielen Dank für deine Vorschläge!

Das Problem ist, dass "coordinates" kein JSONObject ist, sondern ein Feld in einem. Ich kann es also nicht als solches auslesen:
1JSONObject coordinates = json_data.getJSONObject("geo").getJSONObject("coordinates");
Das würde gehen wenn das JSON so aussehen würde:
1"geo": {
2 "type": "Point",
3 "coordinates": {
4 "latitude" : "51.0353",
5 "longitude" : "13.7363"
6 }
7}
Aber leider habe ich keinen Einfluss auf dessen Struktur.

Solange bis ich die elegantere Methode gefunden habe, werd ich es wohl über Strings machen, wie du auch schon meintest. Dann meld ich mich wieder. Falls es jemand vor mir weiß, bitte verraten :-)

Antworten
Bastian B
  • Forum-Beiträge: 47

22.03.2011, 20:07:11 via Website

ManuMaticx

Aber leider habe ich keinen Einfluss auf dessen Struktur.
Schade, das wäre sicher die eleganteste Variante gewesen.
Aber wie schon gesagt, fällt mir nichts weiter ein, ausser als String auslesen und entsprechend umwandeln...
Ist ja auch kein sonderlicher Aufwand. Ne kleine statische Methode und fertig :)

Grüße,
Bastian

Antworten
Gelöschter Account
  • Forum-Beiträge: 80

22.03.2011, 20:10:17 via Website

Kein Problem. Als String funktioniert es auch. Vielen Dank nochmal!

Übrigens: Ab dem API Level 11 gibts einen JsonReader - der kann das wunderbar!

lg manu

Antworten