2012-04-06 20 views
3

Ich muss wissen, ob ein Objekt in einer JSON-Zeichenfolge existiert und je nach Existenz des Objekts verschiedene Dinge tun. Wenn es nicht existiert, möchte ich das Objekt weglassen, weil es NullPonterException auslöst. Ich habe versucht mit wenn aber kein Erfolg ... Kann mir jemand sagen, wie kann ich die Existenz eines Objekts überprüfen?Überprüfen Sie, ob ein Objekt in JSON existiert.

Vielen Dank im Voraus!

+2

Zeigen Sie uns den Code, den Sie versucht. –

+1

Code anzeigen, aber als Starter - haben Sie versucht, die opt-Methoden, z. 'JSONObject # optJSONObject (String)' oder ähnlich? Sie geben 'null' zurück, wenn das Mapping anstelle einer Ausnahme nicht existiert. – Jens

Antwort

14

versuchen, etwas wie folgt aus:

String jsonString = yourJsonString; 
String nameOfObjectInQuestion = "yourObjectInQuestion"; 
JSONObject json = null; 
JSONObject objectInQuestion = null; 
try { 
    json = new JSONObject(jsonString); 
    objectInQuestion = json.getJSONObject(nameOfObjectInQuestion); 
} 
catch (JSONException ignored) {} 

if (objectInQuestion == null) { 
    // Stomp your feet 
} 
else { 
    // Clap your hands 
} 
+0

Philips Es funktioniert wie ein Zauber! Mein Problem ist gelöst, aber ... gibt es eine Möglichkeit, das gleiche Ergebnis zu erhalten, aber mit der GSON-Bibliothek? Vielen Dank! –

4

Sie können isNull() Funktion auf JSONObjects verwenden.

"boolean isNull (String name) Gibt true zurück, wenn dieses Objekt keine Zuordnung für Namen hat oder wenn es eine Abbildung, deren Wert NULL."

JSONObject contact = venueitem.getJSONObject("contact"); 

if (contact.isNull("formattedPhone") == false) 
    venue.phone = contact.getString("formattedPhone"); 
else 
    { 
    ... 
    } 

Quelle: http://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)

+0

Die folgende Zeile wird eine Ausnahme verursachen. JSONObject contact = Veranstaltungsort.getJSONObject ("Kontakt"); –

1

Oder .. prägnanter ...

myJSONObject.isNull("myfield")?"":myJSONObject.getString("myfield") 
Verwandte Themen