Jak mogę wykryć, że wartość json jest zerowa? na przykład: [{"nazwa użytkownika": null}, {"nazwa użytkownika": "null"}]
Pierwszy przypadek reprezentuje nieistniejącą nazwę użytkownika, a drugi użytkownika o nazwie „null”. Ale jeśli spróbujesz pobrać je obie wartości, w rezultacie otrzymasz ciąg „null”
JSONObject json = new JSONObject("{\"hello\":null}");
json.put("bye", JSONObject.NULL);
Log.e("LOG", json.toString());
Log.e("LOG", "hello="+json.getString("hello") + " is null? "
+ (json.getString("hello") == null));
Log.e("LOG", "bye="+json.getString("bye") + " is null? "
+ (json.getString("bye") == null));
Dane wyjściowe dziennika to
{"hello":"null","bye":null}
hello=null is null? false
bye=null is null? false
has(java.lang.String);
metodyOdpowiedzi:
Spróbuj z
json.isNull( "field-name" )
.Źródła: http://developer.android.com/reference/org/json/JSONObject.html#isNull%28java.lang.String%29
źródło
Ponieważ JSONObject # getString zwraca wartość, jeśli dany klucz istnieje, nie jest on z definicji pusty. To jest powód, dla którego istnieje JSONObject.NULL: aby reprezentować pustą wartość JSON.
źródło
W przypadku Androida spowoduje to wyjątek JSONE, jeśli nie istnieje takie mapowanie. Nie możesz więc bezpośrednio wywołać tej metody.
jeśli twoje dane mogą być puste (może nie istnieć klucz), spróbuj
lub
zamiast.
W twoim kodzie demonstracyjnym
otrzymujesz to String "null" nie null.
powinieneś używać
źródło
najpierw sprawdź
isNull()
… jeśli nie działa, spróbuj poniżeja także musisz
JSONObject.NULL
sprawdzić wartość null ...aw twoim przypadku też sprawdź
resultObject.getString("username").trim().eqauls("null")
źródło
Jeśli musisz najpierw przeanalizować json, a później obsłużyć obiekt, spróbujmy tego
Parser
Treser
źródło
Oto metoda pomocnicza, której używam, aby uzyskać ciągi JSON z tylko jedną linią kodu:
a potem coś takiego:
poda wartość ciągu lub bezpiecznie ustawi zmienną łańcuchową na null. Używam Gson, kiedy tylko mogę, aby uniknąć takich pułapek. Moim zdaniem znacznie lepiej radzi sobie z wartościami zerowymi.
źródło