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.