Portanto, recebo alguns valores JSON do servidor, mas não sei se haverá um campo específico ou não.
Assim como:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
}
E, às vezes, haverá um campo extra como:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited",
"club":"somevalue"
}
Gostaria de verificar se o campo chamado "clube" existe para que, na análise, não receba org.json.JSONException: nenhum valor para o clube
Respostas:
A classe JSONObject possui um método chamado "has":
http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)
fonte
Integer
tipo?Integer
chave parece uma má prática. JSON deve estar com uma chave String e um valor do que você precisar.Você pode verificar desta maneira onde 'HAS' - Retorna verdadeiro se este objeto tiver um mapeamento para o nome. O mapeamento pode ser NULL.
fonte
você poderia
JSONObject#has
, fornecendo akey
entrada as e verifique se o método retornatrue
oufalse
. Você também poderiause em
optString
vez degetString
:fonte
getString
tivesse retornado uma sequência vazia,optString
também retornaria uma sequência vazia. Supõe-se que você acredite que o imóvel não está disponível na situação do OP.Você pode usar
has
Determine se o JSONObject contém uma chave específica .
Exemplo
fonte
pouco antes da tecla de leitura, verifique como antes da leitura
definição da função isNull
documentação oficial abaixo link para
isNull
funçãohttp://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)
fonte
Tente isto
fonte
isNull
é realmente para verificar se o mapeamento é nulo, não para verificar a disponibilidade de um membro json.Uma maneira melhor, em vez de usar um condicional como:
é simplesmente usar o método existente optString (), assim:
o método optString ("key") retornará uma String vazia se a chave não existir e, portanto, não emitirá uma exceção.
fonte
Json tem um método chamado
containsKey()
.Você pode usá-lo para verificar se uma determinada chave está contida no conjunto Json.
fonte
funciona em todos os navegadores atuais.
fonte
Tente o seguinte:
fonte
Você pode tentar isso para verificar se a chave existe ou não:
fonte
Estou apenas adicionando outra coisa: caso você queira apenas verificar se alguma coisa foi criada em JSONObject ou não, você pode usar length (), porque, por padrão, quando JSONObject é inicializado e nenhuma chave é inserida, ele tem chaves vazias
{}
e o uso de has (Tecla String) não faz nenhum sentido.Então você pode escrever
if (jsonObject.length() > 0)
e fazer suas coisas diretamente .Feliz aprendizado!
fonte
Você pode usar o JsonNode # hasNonNull (String fieldName) , ele mistura o método has e a verificação se é um valor nulo ou não
fonte