Ich erhalte also einige JSON-Werte vom Server, weiß aber nicht, ob es ein bestimmtes Feld geben wird oder nicht.
So wie:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
}
Und manchmal gibt es ein zusätzliches Feld wie:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited",
"club":"somevalue"
}
Ich möchte überprüfen, ob das Feld "club" vorhanden ist, damit ich beim Parsen keine org.json.JSONException erhalte: Kein Wert für club
Antworten:
Die JSONObject-Klasse hat eine Methode namens "has":
http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)
quelle
Integer
Typ ist?Integer
als Schlüssel klingt nach schlechter Praxis. JSON sollte einen String-Schlüssel und einen Wert von allem enthalten, was Sie benötigen.Sie können auf diese Weise überprüfen, wo 'HAS' - Gibt true zurück, wenn dieses Objekt eine Zuordnung für den Namen hat. Die Zuordnung kann NULL sein.
quelle
Sie könnten
JSONObject#has
, sofern diekey
als Eingabe und überprüfen , ob die Methode zurückgibt ,true
oderfalse
. Du könntest auchVerwenden Sie
optString
anstelle vongetString
:quelle
getString
eine leere Zeichenfolge zurückgegeben wordenoptString
wäre , würde auch eine leere Zeichenfolge zurückgegeben. Angenommen, Sie glauben dann, dass die Immobilie in der Situation von OP nicht verfügbar ist.Sie können verwenden
has
Stellen Sie fest, ob das JSONObject einen bestimmten Schlüssel enthält .
Beispiel
quelle
Überprüfen Sie die Taste kurz vor dem Lesen wie vor dem Lesen
isNull Funktionsdefinition
offizielle Dokumentation unter Link für
isNull
Funktionhttp://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)
quelle
Versuche dies
quelle
isNull
dient eigentlich dazu, zu überprüfen, ob die Zuordnung null ist, und nicht, um die Verfügbarkeit eines json-Mitglieds zu überprüfen.Ein besserer Weg, anstatt eine Bedingung wie:
Verwenden Sie einfach die vorhandene Methode optString () wie folgt:
Die optString-Methode ("key") gibt einen leeren String zurück, wenn der Schlüssel nicht vorhanden ist, und löst daher keine Ausnahme aus.
quelle
Json hat eine Methode namens
containsKey()
.Sie können damit überprüfen, ob ein bestimmter Schlüssel im Json-Set enthalten ist.
quelle
funktioniert in allen aktuellen Browsern.
quelle
Versuche dies:
quelle
Sie können dies versuchen, um zu überprüfen, ob der Schlüssel vorhanden ist oder nicht:
quelle
Ich füge nur noch etwas hinzu: Wenn Sie nur überprüfen möchten, ob in JSONObject etwas erstellt wurde oder nicht, können Sie length () verwenden, da JSONObject standardmäßig initialisiert und kein Schlüssel eingefügt wird, nur leere Klammern hat
{}
und has hat (String key) macht keinen Sinn.So können Sie direkt schreiben
if (jsonObject.length() > 0)
und Ihre Sachen machen.Viel Spaß beim Lernen!
quelle
Sie können den JsonNode # hasNonNull (String fieldName) verwenden . Er mischt die has- Methode und die Überprüfung, ob es sich um einen Nullwert handelt oder nicht
quelle