Voy a recibir un objeto JSON o una matriz del servidor, pero no tengo idea de cuál será. Necesito trabajar con el JSON, pero para hacerlo, necesito saber si es un objeto o una matriz.
Estoy trabajando con Android
¿Alguien tiene una buena manera de hacer esto?
Respuestas:
Encontré una mejor manera de determinar:
tokenizer puede devolver más tipos: http://developer.android.com/reference/org/json/JSONTokener.html#nextValue ()
fuente
JSONTokener
. No hice eso, pero supongo que deberías omitir Pasado ("tu_clave") . Pero no estoy seguro. Sin embargo, debería considerar usar json mapper: Gson, Jackson, Moshi y muchos otros.Hay un par de formas de hacer esto:
{
, estás tratando con unJSONObject
, si es un[
, estás tratando con unJSONArray
.Object
), puede hacer unainstanceof
verificación.yourObject instanceof JSONObject
. Esto devolverá verdadero si yourObject es un JSONObject. Lo mismo se aplica a JSONArray.fuente
Esta es la solución simple que estoy usando en Android:
fuente
json.has("data")
supone que todo es opcional (no solicitado).Presentando otra forma:
Aquí
server_response
hay una cadena de respuesta que viene del servidorfuente
Una forma más fundamental de hacer esto es la siguiente.
JsonArray
es inherentemente una listaJsonObject
es inherentemente un mapafuente
en vez de
Object.getClass (). GetName ()
fuente
Para aquellos que abordan este problema en JavaScript, lo siguiente hizo el trabajo por mí (no estoy seguro de cuán eficiente es).
fuente
Mi enfoque sería una abstracción total de esto. Tal vez alguien encuentre esto útil ...
Y ahora deshazte de este comportamiento para siempre ...
fuente