JSON.simple es una sencilla biblioteca para trabajar JSON con Java, se puede utilizar para codificar y decodificar texto JSON. Su simplicidad es su principal característica e implementarla consiste en añadirla al classpath del proyecto. Vamos a desarrollar un pequeño ejemplo para aprender como utilizarla.

 

¿Que necesitamos?

  • Java instalado en nuestro equipo (Tutorial aqui).
  • Biblioteca JSON.simple (descargar aqui).

 

Construyendo un objeto JSON

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

public class JsonCreate {

    public static void main(String[] args) {

        JSONObject obj = new JSONObject();
        obj.put("nombre", "developer");
        obj.put("edad", new Integer(30));

        JSONArray list = new JSONArray();
        list.add("item 1");
        list.add("item 2");
        list.add("item 3");
        list.add(new Boolean(true));
        list.add(new java.util.Date().toString());
        obj.put("Lista", list);
        System.out.print(obj);
    }
}

El objeto JSONObject puede aceptar tipos de datos primitivos de Java y Arreglo de objetos primitivos , al mostrar la salida de este programa obtenemos:

{"nombre":"developer","edad":30,"Lista":["item 1","item 2","item 3",true,"Mon Jan 30 16:59:32 CET 2012"]}

 

Leyendo de un Objeto JSON

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JsonRead {

    public static void main(String[] args) {

        JSONParser parser = new JSONParser();

        try {
            String json="{\"nombre\":\"developer\",\"edad\":30,\"Lista\":[\"item 1\",\"item 2\",\"item 3\",true,\"Mon Jan 30 17:05:28 CET 2012\"]}";
            Object obj = parser.parse(json);

            JSONObject jsonObject = (JSONObject) obj;

            String name = (String) jsonObject.get("nombre");
            System.out.println(name);

            long age = (Long) jsonObject.get("edad");
            System.out.println(age);

            // loop array
            JSONArray msg = (JSONArray) jsonObject.get("Lista");
            Iterator
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

Al analizar el contenido de la variable, se crea un objeto JSONObject  que nos permite utilizar y buscar por la clave con la que fué almacenado. El código produce una salida similar a esta:

developer
30
item 1
item 2
item 3
true
Mon Jan 30 17:05:28 CET 2012

 

Consideraciones

La sencillez de JSON.simple también es un gran inconveniente a la hora de transformar otros objetos (Clases propias)  a JSON o viceversa, por ejemplo consideremos la siguiente clase:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Bean {

    String propiedad1;
    int propiedad2;

    public Bean(String propiedad1, int propiedad2) {
        super();
        this.propiedad1 = propiedad1;
        this.propiedad2 = propiedad2;
    }

    public String getPropiedad1() {
        return propiedad1;
    }

    public void setPropiedad1(String propiedad1) {
        this.propiedad1 = propiedad1;
    }

    public int getPropiedad2() {
        return propiedad2;
    }

    public void setPropiedad2(int propiedad2) {
        this.propiedad2 = propiedad2;
    }
}

Al agregarla a nuestro objeto JSON obtendremos la transformación a String del objeto que realiza la superclase Object.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

public class JsonCreate {

    public static void main(String[] args) {

        JSONObject obj = new JSONObject();
        obj.put("id", new Integer(30));
        obj.put("s", "developer");

        JSONArray list = new JSONArray();
        list.add("item 1");
        list.add("item 2");
        list.add("item 3");
        list.add(new Boolean(true));
        list.add(new java.util.Date().toString());
        list.add(new Bean("p2", 2));
        obj.put("Lista", list);
        System.out.print(obj);

    }
}

Al ejecutar el código obtenemos:

{"id":30,"s":"developer","Lista":["item 1","item 2","item 3",true,"Mon Jan 30 17:53:55 CET 2012",json.Bean@1fb8ee3]}

JSON.simple carece de la transformación de clases a objetos JSON (algo que si poseen bibliotecas como GSON o Jackson), por lo que recomendamos que se utilicen estas últimas si vas a realizar aplicaciones más completas que simplemente leer y escribir objetos JSON.
 
 

Descarga el código fuente

[button border_radius=’3′ bg_color=’#282d35′ to=’http://www.elclubdelprogramador.com/wp-content/resources/json.zip’ style=’glass’] Descargar [/button]

(Visited 6,055 times, 3 visits today)