org.json - Guía rápida
org.json or JSON-Javaes un sencillo kit de herramientas basado en Java para JSON. Puede usar org.json para codificar o decodificar datos JSON.
Caracteristicas
Specification Compliant - JSON.simple es totalmente compatible con la especificación JSON - RFC4627.
Lightweight - Tiene muy pocas clases y proporciona las funcionalidades necesarias como codificar / decodificar y escapar de json.
XML Conversion - Proporciona capacidad de conversión de JSON a XML y viceversa.
HTTP Headers - Admite la conversión de encabezado HTTP a JSON y viceversa.
Cookie - Proporciona soporte para la conversión de cookies a JSON y viceversa.
CDL - Proporciona soporte para convertir listas separadas por comas a JSON y viceversa.
No dependency- Sin dependencia de biblioteca externa. Se puede incluir de forma independiente.
Java 1.6-1.8 compatible - El código fuente y el binario son compatibles con Java 1.6-1.8
Configuración del entorno local
JSON.simple es una biblioteca para Java, por lo que el primer requisito es tener JDK instalado en su máquina.
Requisitos del sistema
JDK | 1,5 o superior. |
---|---|
Memoria | Sin requisitos mínimos. |
Espacio del disco | Sin requisitos mínimos. |
Sistema operativo | Sin requisitos mínimos. |
Paso 1: Verifique la instalación de Java en su máquina
En primer lugar, abra la consola y ejecute un comando java basado en el sistema operativo en el que está trabajando.
SO | Tarea | Mando |
---|---|---|
Ventanas | Abrir consola de comandos | c: \> java -version |
Linux | Terminal de comando abierto | $ java -version |
Mac | Terminal abierta | máquina: <joseph $ java -version |
Verifiquemos la salida para todos los sistemas operativos:
SO | Salida |
---|---|
Ventanas | versión de Java "1.8.0_101" Entorno de ejecución Java (TM) SE (compilación 1.8.0_101) |
Linux | versión de Java "1.8.0_101" Entorno de ejecución Java (TM) SE (compilación 1.8.0_101) |
Mac | versión de Java "1.8.0_101" Entorno de ejecución Java (TM) SE (compilación 1.8.0_101) |
Si no tiene Java instalado en su sistema, descargue Java Software Development Kit (SDK) desde el siguiente enlace www.oracle.com . Estamos asumiendo Java 1.8.0_101 como la versión instalada para este tutorial.
Paso 2: configurar el entorno JAVA
Selecciona el JAVA_HOMEvariable de entorno para apuntar a la ubicación del directorio base donde está instalado Java en su máquina. Por ejemplo.
SO | Salida |
---|---|
Ventanas | Establezca la variable de entorno JAVA_HOME en C: \ Archivos de programa \ Java \ jdk1.8.0_101 |
Linux | exportar JAVA_HOME = / usr / local / java-current |
Mac | exportar JAVA_HOME = / Library / Java / Home |
Agregue la ubicación del compilador de Java a la ruta del sistema.
SO | Salida |
---|---|
Ventanas | Añade la cadena C:\Program Files\Java\jdk1.8.0_101\bin al final de la variable del sistema, Path. |
Linux | export PATH = $ PATH: $ JAVA_HOME / bin / |
Mac | no requerido |
Verifique la instalación de Java usando el comando java -version como se explicó anteriormente.
Paso 3: Descarga el archivo org.json
Descargue la última versión del archivo jar org.json desde org.json @ MVNRepository . En el momento de escribir este tutorial, hemos descargado json-20180813 y lo hemos copiado en la carpeta C: \> JSON.
SO | Nombre de archivo |
---|---|
Ventanas | json-20180813.jar |
Linux | json-20180813.jar |
Mac | json-20180813.jar |
Paso 4: configurar el entorno JSON_JAVA
Selecciona el JSON_JAVAvariable de entorno para apuntar a la ubicación del directorio base donde se almacena org.json jar en su máquina. Supongamos que hemos almacenado json-20180813.jar en la carpeta JSON.
No Señor | SO y descripción |
---|---|
1 | Windows Establezca la variable de entorno JSON_JAVA en C: \ JSON |
2 | Linux exportar JSON_JAVA = / usr / local / JSON |
3 | Mac exportar JSON_JAVA = / Library / JSON |
Paso 5: Establecer la variable CLASSPATH
Selecciona el CLASSPATH variable de entorno para apuntar a la ubicación del jar JSON.simple.
No Señor | SO y descripción |
---|---|
1 | Windows Establezca la variable de entorno CLASSPATH en% CLASSPATH%;% JSON_JAVA% \ json-20180813.jar;.; |
2 | Linux export CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-20180813.jar :. |
3 | Mac export CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-20180813.jar :. |
La clase CDL proporciona métodos estáticos para convertir un texto delimitado por comas en un JSONArray y viceversa.
Los siguientes métodos están cubiertos en el ejemplo.
rowToJSONArray(String) - Convierte un texto delimitado por comas en JSONArray Object.
rowToString(JSONArray) - Convierte un JSONArray en texto delimitado por comas.
toJSONArray(String) - Convierte un texto delimitado por comas de varias líneas en Objeto de objetos JSONArray.
toJSONArray(JSONArray, String) - Convierte un objeto JSONArray y texto delimitado por comas en un objeto JSONArray.
Ejemplo
import org.json.CDL;
import org.json.JSONArray;
import org.json.JSONTokener;
public class JSONDemo {
public static void main(String[] args) {
String csvData = "INDIA, UK, USA";
//Case 1: CSV to JSON Array
JSONArray jsonArray = CDL.rowToJSONArray(new JSONTokener(csvData));
System.out.println(jsonArray);
//Case 2: JSONArray to CSV
System.out.println(CDL.rowToString(jsonArray));
//Case 3: CSV to JSONArray of Objects
csvData = "empId, name, age \n" +
"1, Mark, 22 \n" +
"2, Robert, 35 \n" +
"3, Julia, 18";
System.out.println(CDL.toJSONArray(csvData));
//Case 4: CSV without header
jsonArray = new JSONArray();
jsonArray.put("empId");
jsonArray.put("name");
jsonArray.put("age");
csvData = "1, Mark, 22 \n" + "2, Robert, 35 \n" + "3, Julia, 18";
System.out.println(CDL.toJSONArray(jsonArray,csvData));
}
}
Salida
["INDIA","UK","USA"]
INDIA,UK,USA
[{"name":"Mark","empId":"1","age":"22"},
{"name":"Robert","empId":"2","age":"35"},
{"name":"Julia","empId":"3","age":"18"}]
[{"name":"Mark","empId":"1","age":"22"},
{"name":"Robert","empId":"2","age":"35"},
{"name":"Julia","empId":"3","age":"18"}]
La clase Cookie proporciona métodos estáticos para convertir el texto de las cookies del navegador web en un JSONObject y viceversa.
Los siguientes métodos están cubiertos en el ejemplo.
toJSONObject(String) - Convierte un texto de cookie en JSONObject Object.
toString(JSONObject) - Convierte un JSONObject en texto de cookie.
Ejemplo
import org.json.Cookie;
import org.json.JSONObject;
public class JSONDemo {
public static void main(String[] args) {
String cookie = "username = Mark Den; expires = Thu, 15 Jun 2020 12:00:00 UTC; path = /";
//Case 1: Converts Cookie String to JSONObject
JSONObject jsonObject = Cookie.toJSONObject(cookie);
System.out.println(jsonObject);
//Case 2: Converts JSONObject to Cookie String
System.out.println(Cookie.toString(jsonObject));
}
}
Salida
{"path":"/","expires":"Thu, 15 Jun 2020 12:00:00 UTC","name":"username","value":"Mark Den"}
username=Mark Den;expires=Thu, 15 Jun 2020 12:00:00 UTC;path=/
La clase CookieList proporciona métodos estáticos para convertir la lista de cookies a JSONObject y viceversa. La lista de cookies es una secuencia de pares de nombre / valor.
Los siguientes métodos están cubiertos en el ejemplo.
toJSONObject(String) - Convierte un texto de lista de cookies en JSONObject Object.
toString(JSONObject) - Convierte un JSONObject en texto de lista de cookies.
Ejemplo
import org.json.Cookie;
import org.json.CookieList;
import org.json.JSONObject;
public class JSONDemo {
public static void main(String[] args) {
String cookie = "username = Mark Den; expires = Thu, 15 Jun 2020 12:00:00 UTC; path = /";
//Case 1: Converts Cookie String to JSONObject
JSONObject cookieJSONObject = Cookie.toJSONObject(cookie);
JSONObject cookielistJSONObject = new JSONObject();
cookielistJSONObject.put(cookieJSONObject.getString("name"),
cookieJSONObject.getString("value"));
String cookieList = CookieList.toString(cookielistJSONObject);
System.out.println(cookieList);
System.out.println(CookieList.toJSONObject(cookieList));
}
}
Salida
username=Mark Den
{"username":"Mark Den"}
La clase HTTP proporciona métodos estáticos para convertir el texto del encabezado del navegador web en un JSONObject y viceversa.
Los siguientes métodos están cubiertos en el ejemplo.
toJSONObject(String) - Convierte un texto de encabezado en JSONObject Object.
toString(JSONObject) - Convierte un JSONObject en texto de encabezado.
Ejemplo
import org.json.HTTP;
import org.json.JSONObject;
public class JSONDemo {
public static void main(String[] args) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("Method", "POST");
jsonObject.put("Request-URI", "http://www.tutorialspoint.com/");
jsonObject.put("HTTP-Version", "HTTP/1.1");
//Case 1: Converts JSONObject of Header to String
String headerText = HTTP.toString(jsonObject);
System.out.println(headerText);
headerText = "POST \"http://www.tutorialspoint.com/\" HTTP/1.1";
//Case 2: Converts Header String to JSONObject
System.out.println(HTTP.toJSONObject(headerText));
}
}
Salida
POST "http://www.tutorialspoint.com/" HTTP/1.1
{"Request-URI":"http://www.tutorialspoint.com/","Method":"POST","HTTP-Version":"HTTP/1.1"}
Un JSONArray es una secuencia ordenada de valores. Proporciona métodos para acceder a valores por índice y para poner valores. Se admiten los siguientes tipos:
Boolean
JSONArray
JSONObject
Number
String
Objeto JSONObject.NULL
Ejemplo
import org.json.JSONArray;
import org.json.JSONObject;
public class JSONDemo {
public static void main(String[] args) {
JSONArray list = new JSONArray();
list.put("foo");
list.put(new Integer(100));
list.put(new Double(1000.21));
list.put(new Boolean(true));
list.put(JSONObject.NULL);
System.out.println("JSONArray: ");
System.out.println(list);
}
}
Salida
JSONArray:
["foo",100,1000.21,true,null]
La clase JSONML proporciona métodos estáticos para convertir un texto XML en un JSONArray y viceversa.
Los siguientes métodos están cubiertos en el ejemplo.
toJSONArray(String) - Convierte un XML a JSONArray Object.
toJSONObject(String) - Convierte un XML en un objeto JSONObject.
toString(JSONArray) - Da un XML de un objeto JSONArray.
toString(JSONObject) - Da un XML de un objeto JSONObject.
Ejemplo
import org.json.JSONArray;
import org.json.JSONML;
import org.json.JSONObject;
public class JSONDemo {
public static void main(String[] args) {
JSONArray list = new JSONArray();
list.put("name");
list.put("Robert");
System.out.println("XML from a JSONArray: ");
String xml = JSONML.toString(list);
System.out.println(xml);
System.out.println("JSONArray from a XML: ");
list = JSONML.toJSONArray(xml);
System.out.println(list);
System.out.println("JSONObject from a XML: ");
JSONObject object = JSONML.toJSONObject(xml);
System.out.println(object);
System.out.println("XML from a JSONObject: ");
xml = JSONML.toString(object);
System.out.println(xml);
}
}
Salida
XML from a JSONArray:
<name>Robert</name>
JSONArray from a XML:
["name","Robert"]
JSONObject from a XML:
{"childNodes":["Robert"],"tagName":"name"}
XML from a JSONObject:
<name>Robert</name>
La clase JSONObject es una colección desordenada de pares clave-valor. Proporciona métodos para acceder a los valores por clave y poner valores. Se admiten los siguientes tipos:
Boolean
JSONArray
JSONObject
Number
String
Objeto JSONObject.NULL
Ejemplo
import org.json.JSONArray;
import org.json.JSONObject;
public class JSONDemo {
public static void main(String[] args) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("Name", "Robert");
jsonObject.put("ID", 1);
jsonObject.put("Fees", new Double(1000.21));
jsonObject.put("Active", new Boolean(true));
jsonObject.put("Other Details", JSONObject.NULL);
JSONArray list = new JSONArray();
list.put("foo");
list.put(new Integer(100));
jsonObject.put("list",list);
System.out.println(jsonObject);
}
}
Salida
{"Active":true,"Other Details":null,"ID":1,"Fees":1000.21,"list":["foo",100],"Name":"Robert"}
JSONStringer es una clase de utilidad para crear un texto JSON rápidamente que confirma las reglas de sintaxis JSON. Cada instancia de JSONStringer puede producir un texto JSON.
Ejemplo
import org.json.JSONStringer;
public class JSONDemo {
public static void main(String[] args) {
String jsonText = new JSONStringer()
.object()
.key("Name")
.value("Robert")
.endObject()
.toString();
System.out.println(jsonText);
jsonText = new JSONStringer()
.array()
.value("Robert")
.value("Julia")
.value("Dan")
.endArray()
.toString();
System.out.println(jsonText);
jsonText = new JSONStringer()
.array()
.value("Robert")
.value("Julia")
.value("Dan")
.object()
.key("Name")
.value("Robert")
.endObject()
.endArray()
.toString();
System.out.println(jsonText);
}
}
Salida
{"Name":"Robert"}
["Robert","Julia","Dan"]
["Robert","Julia","Dan",{"Name":"Robert"}]
La clase de propiedad proporciona métodos estáticos para convertir el texto de las propiedades en un JSONObject y viceversa.
Los siguientes métodos están cubiertos en el ejemplo.
toJSONObject(Properties) - Convierte los datos de una propiedad en JSONObject Object.
toProperties(JSONObject) - Convierte un JSONObject en un objeto de propiedades.
Ejemplo
import java.util.Properties;
import org.json.JSONObject;
import org.json.Property;
public class JSONDemo {
public static void main(String[] args) {
Properties properties = new Properties();
properties.put("title", "This is a title text");
properties.put("subtitle", "This is a subtitle text");
System.out.println("Properties to JSON");
JSONObject jsonObject = Property.toJSONObject(properties);
System.out.println(jsonObject);
System.out.println("JSON to properties");
System.out.println(Property.toProperties(jsonObject));
}
}
Salida
Properties to JSON
{"subtitle":"This is a subtitle text","title":"This is a title text"}
JSON to properties
{subtitle = This is a subtitle text, title = This is a title text}
La clase XML proporciona métodos estáticos para convertir un texto XML en un JSONObject y viceversa.
Los siguientes métodos están cubiertos en el ejemplo.
toJSONObject(String) - Convierte un XML a JSONArray Object.
toString(JSONObject) - Da un XML de un objeto JSONObject.
Ejemplo
import org.json.JSONObject;
import org.json.XML;
public class JSONDemo {
public static void main(String[] args) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("Name", "Robert");
jsonObject.put("ID", 1);
jsonObject.put("Fees", new Double(1000.21));
jsonObject.put("Active", new Boolean(true));
jsonObject.put("Details", JSONObject.NULL);
//Convert a JSONObject to XML
String xmlText = XML.toString(jsonObject);
System.out.println(xmlText);
//Convert an XML to JSONObject
System.out.println(XML.toJSONObject(xmlText));
}
}
Salida
<Active>true</Active><Details>null</Details><ID>1</ID><Fees>1000.21</Fees><Name>Robert</Name>
{"Active":true,"Details":null,"ID":1,"Fees":1000.21,"Name":"Robert"}
Las clases de utilidad de org.json arrojan JSONException en caso de JSON no válido. El siguiente ejemplo muestra cómo manejar JSONException.
Ejemplo
import org.json.JSONException;
import org.json.XML;
public class JSONDemo {
public static void main(String[] args) {
try{
//XML tag name should not have space.
String xmlText = "<Other Details>null</Other Details>";
System.out.println(xmlText);
//Convert an XML to JSONObject
System.out.println(XML.toJSONObject(xmlText));
} catch(JSONException e){
System.out.println(e.getMessage());
}
}
}
Salida
position: 24
Unexpected token RIGHT BRACE(}) at position 24.