Как я могу определить, когда значение json равно нулю? например: [{"username": null}, {"username": "null"}]
Первый случай представляет собой несуществующее имя пользователя, а второй - пользователя с именем «null». Но если вы попытаетесь получить их, оба значения приведут к строке "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));
Вывод журнала
{"hello":"null","bye":null}
hello=null is null? false
bye=null is null? false
has(java.lang.String);
методОтветы:
Попробуйте с
json.isNull( "field-name" )
.Ссылка: http://developer.android.com/reference/org/json/JSONObject.html#isNull%28java.lang.String%29
источник
Поскольку JSONObject # getString возвращает значение, если данный ключ существует, по определению он не является нулевым. Это причина, по которой существует JSONObject.NULL: для представления нулевого значения JSON.
источник
Для Android это вызовет исключение JSONException, если такого сопоставления не существует. Таким образом, вы не можете вызвать этот метод напрямую.
если ваши данные могут быть пустыми (возможно, не существует ключа), попробуйте
или
вместо.
В вашем демонстрационном коде
это будет String "null", а не null.
ваше использование shoud
источник
сначала проверьте с
isNull()
.... если не работает, попробуйте следующееа также вам нужно
JSONObject.NULL
проверить нулевое значение ...и в вашем случае также проверьте
resultObject.getString("username").trim().eqauls("null")
источник
Если вам нужно сначала проанализировать json, а потом обработать объект, попробуйте это
Парсер
Обработчик
источник
Вот вспомогательный метод, который я использую, чтобы получать строки JSON с помощью только одной строки кода:
а потом примерно так:
предоставит вам строковое значение или безопасно установит для строковой переменной значение null. Я использую Gson, когда могу, чтобы избежать подобных ловушек. На мой взгляд, он намного лучше обрабатывает нулевые значения.
источник