Recorrer JSONObject en JAVA

Entrada corta, de esas que me hago a mi mismo para cuando tenga que volver a utilizarla😀

Supongamos que tenemos el siguiente JSON

{
    "invalidar":
        {
            "NoSupervisores":["11","13","14","15"],
            "NoActivos":["13","14","15"],
            "NoReservas":["13","14","15"]
        },
    "validar":
        {
            "Reservas":["9","11","12","18"],
            "Supervisores":["9","12","18"],
            "Activos":["9","11","12","18"]
        }
}

que recibimos desde una página. Lo convertimos en un objeto usando las librerías directas de json.

JSONObject json = new JSONObject(request.getParameter("permisos"));

Y ahora queremos recorrerlo en base a las 2 entradas principales.

Tan simple como esto:

Iterator<?> permisos = json.keys();
while(permisos.hasNext() ){
    String key = (String)permisos.next();
    Iterator<?> tipo = json.getJSONObject(key).keys();
    while(tipo.hasNext()){
        String key2 = (String)tipo.next();
        out.write(json.getJSONObject(key).getJSONArray(key2).toString()+"<br />");
    }
}

Y recibimos algo así

["11","13","14","15"]
["13","14","15"]
["13","14","15"]
["9","11","12","18"]
["9","12","18"]
["9","11","12","18"]

Listo ! Obviamente, el ejemplo toma 2 niveles de profundidad, pero si quieren ir más adentro, simplemente agregan otro while.

La magia la hace la propiedad .keys() ya que devuelve el conjunto en un iterador, de modo que es más simple recorrer.

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en Java, JavaScript, Tips. Guarda el enlace permanente.

3 respuestas a Recorrer JSONObject en JAVA

  1. Pepe dijo:

    No hay ningún key

  2. Pepe dijo:

    No hay método key en jsonobject

  3. MaritoCares dijo:

    Han pasado 2 años. Muy probablemente la librería se haya actualizado.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s