JSON con Java
Este capítulo cubre cómo codificar y decodificar objetos JSON usando el lenguaje de programación Java. Comencemos por preparar el entorno para comenzar nuestra programación con Java para JSON.
Medio ambiente
Antes de comenzar a codificar y decodificar JSON con Java, debe instalar cualquiera de los módulos JSON disponibles. Para este tutorial, hemos descargado e instalado JSON.simple y hemos agregado la ubicación dejson-simple-1.1.1.jar archivo a la variable de entorno CLASSPATH.
Mapeo entre entidades JSON y Java
JSON.simple mapea entidades del lado izquierdo al lado derecho mientras decodifica o analiza, y mapea entidades de derecha a izquierda mientras codifica.
JSON | Java |
---|---|
cuerda | java.lang.String |
número | java.lang.Number |
verdadero | falso | java.lang.Boolean |
nulo | nulo |
formación | java.util.List |
objeto | java.util.Map |
Al decodificar, la clase concreta predeterminada de java.util.List es org.json.simple.JSONArray y la clase concreta predeterminada de java.util.Map es org.json.simple.JSONObject .
Codificación de JSON en Java
A continuación se muestra un ejemplo simple para codificar un objeto JSON utilizando Java JSONObject, que es una subclase de java.util.HashMap. No se proporciona ningún pedido. Si necesita el orden estricto de los elementos, use el método JSONValue.toJSONString (map) con una implementación de mapa ordenada como java.util.LinkedHashMap.
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true));
System.out.print(obj);
}
}
Al compilar y ejecutar el programa anterior, se generará el siguiente resultado:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
A continuación se muestra otro ejemplo que muestra una transmisión de objetos JSON utilizando Java JSONObject:
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true));
StringWriter out = new StringWriter();
obj.writeJSONString(out);
String jsonText = out.toString();
System.out.print(jsonText);
}
}
Al compilar y ejecutar el programa anterior, se genera el siguiente resultado:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
Decodificando JSON en Java
El siguiente ejemplo hace uso de JSONObject y JSONArray donde JSONObject es un java.util.Map y JSONArray es un java.util.List, por lo que puede acceder a ellos con operaciones estándar de Map o List.
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
class JsonDecodeDemo {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try{
Object obj = parser.parse(s);
JSONArray array = (JSONArray)obj;
System.out.println("The 2nd element of array");
System.out.println(array.get(1));
System.out.println();
JSONObject obj2 = (JSONObject)array.get(1);
System.out.println("Field \"1\"");
System.out.println(obj2.get("1"));
s = "{}";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,]";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,,2]";
obj = parser.parse(s);
System.out.println(obj);
}catch(ParseException pe) {
System.out.println("position: " + pe.getPosition());
System.out.println(pe);
}
}
}
Al compilar y ejecutar el programa anterior, se generará el siguiente resultado:
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]