Vou receber um objeto JSON ou uma matriz do servidor, mas não tenho idéia de qual será. Preciso trabalhar com o JSON, mas para fazer isso, preciso saber se é um Objeto ou uma Matriz.
Estou trabalhando com Android.
Alguém tem uma boa maneira de fazer isso?
Respostas:
Encontrei uma maneira melhor de determinar:
o tokenizer pode retornar mais tipos: http://developer.android.com/reference/org/json/JSONTokener.html#nextValue ()
fonte
JSONTokener
. Não fiz isso, mas suponho que você deveria pularPast ("sua_chave") . Mas eu não tenho certeza. No entanto, você deve considerar o uso do json mapper: Gson, Jackson, Moshi e muitos outros.Existem algumas maneiras de fazer isso:
{
, você está lidando com aJSONObject
, se é a[
, você está lidando com aJSONArray
.Object
), poderá fazer umainstanceof
verificação.yourObject instanceof JSONObject
. Isso retornará true se yourObject for um JSONObject. O mesmo se aplica ao JSONArray.fonte
Esta é a solução simples que estou usando no Android:
fonte
json.has("data")
supõe que a coisa toda é opcional (não solicitada).Apresentando uma outra maneira:
Aqui
server_response
está uma resposta String vinda do servidorfonte
Uma maneira mais fundamental de fazer isso é o seguinte.
JsonArray
é inerentemente uma listaJsonObject
é inerentemente um mapafonte
instancia de
Object.getClass (). GetName ()
fonte
Para aqueles que enfrentam esse problema no JavaScript, o seguinte foi o meu trabalho (não tenho certeza de quão eficiente é).
fonte
Minha abordagem seria uma abstração total disso. Talvez alguém ache isso útil ...
E agora se livre desse comportamento para sempre ...
fonte