Como posso detectar quando um valor json é nulo? por exemplo: [{"username": null}, {"username": "null"}]
O primeiro caso representa um nome de usuário inexistente e o segundo um usuário denominado "null". Mas se você tentar recuperar os dois valores resultarão na string "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));
A saída do log é
{"hello":"null","bye":null}
hello=null is null? false
bye=null is null? false
has(java.lang.String);
métodoRespostas:
Experimente com
json.isNull( "field-name" )
.Referência: http://developer.android.com/reference/org/json/JSONObject.html#isNull%28java.lang.String%29
fonte
Como JSONObject # getString retorna um valor se a chave fornecida existir, ele não é nulo por definição. Este é o motivo pelo qual JSONObject.NULL existe: para representar um valor JSON nulo.
fonte
Para o Android, ele gerará uma JSONException se esse mapeamento não existir. Portanto, você não pode chamar esse método diretamente.
se seus dados podem estar vazios (pode não existir a chave), tente
ou
em vez de.
Em seu código de demonstração, o
isso que você obtém é String "null" não nula.
seu shoud use
fonte
primeiro verifique com
isNull()
... se não funcionar, tente abaixoe também você tem
JSONObject.NULL
que verificar o valor nulo ...e no seu caso também verifique
resultObject.getString("username").trim().eqauls("null")
fonte
Se você deve analisar json primeiro e manipular o objeto depois, vamos tentar isso
Parser
Handler
fonte
Este é um método auxiliar que uso para obter strings JSON com apenas uma linha de código:
e então algo assim:
forneceria seu valor de string ou definiria com segurança sua variável de string como nula. Eu uso Gson sempre que posso para evitar armadilhas como essas. Ele lida com valores nulos muito melhor na minha opinião.
fonte