org.json - Guia rápido

org.json or JSON-Javaé um kit de ferramentas simples baseado em Java para JSON. Você pode usar org.json para codificar ou decodificar dados JSON.

Características

  • Specification Compliant - JSON.simple é totalmente compatível com a Especificação JSON - RFC4627.

  • Lightweight - Tem muito poucas classes e fornece as funcionalidades necessárias como codificar / decodificar e escapar de json.

  • XML Conversion - Ele fornece capacidade de conversão de JSON para XML e vice-versa.

  • HTTP Headers - Suporta conversão de cabeçalho HTTP para JSON e vice-versa.

  • Cookie - Fornece suporte para conversão de Cookie em JSON e vice-versa.

  • CDL - Fornece suporte para converter listas separadas por vírgulas em JSON e vice-versa.

  • No dependency- Sem dependência de biblioteca externa. Pode ser incluído de forma independente.

  • Java 1.6-1.8 compatible - O código-fonte e o binário são compatíveis com Java 1.6-1.8

Configuração de ambiente local

JSON.simple é uma biblioteca para Java, então o primeiro requisito é ter o JDK instalado em sua máquina.

Requisitos do sistema

JDK 1,5 ou superior.
Memória Sem requisitos mínimos.
Espaço em disco Sem requisitos mínimos.
Sistema operacional Sem requisitos mínimos.

Etapa 1: verifique a instalação do Java em sua máquina

Em primeiro lugar, abra o console e execute um comando java baseado no sistema operacional em que você está trabalhando.

SO Tarefa Comando
janelas Abrir console de comando c: \> versão java
Linux Abra o terminal de comando $ java -version
Mac Terminal aberto máquina: <joseph $ java -version

Vamos verificar a saída de todos os sistemas operacionais -

SO Resultado
janelas

versão java "1.8.0_101"

Java (TM) SE Runtime Environment (build 1.8.0_101)

Linux

versão java "1.8.0_101"

Java (TM) SE Runtime Environment (build 1.8.0_101)

Mac

versão java "1.8.0_101"

Java (TM) SE Runtime Environment (build 1.8.0_101)

Se você não tiver o Java instalado em seu sistema, baixe o Java Software Development Kit (SDK) do seguinte link www.oracle.com . Estamos assumindo o Java 1.8.0_101 como a versão instalada para este tutorial.

Etapa 2: definir o ambiente JAVA

Colocou o JAVA_HOMEvariável de ambiente para apontar para o local do diretório base onde o Java está instalado em sua máquina. Por exemplo.

SO Resultado
janelas Defina a variável de ambiente JAVA_HOME para C: \ Program Files \ Java \ jdk1.8.0_101
Linux export JAVA_HOME = / usr / local / java-current
Mac export JAVA_HOME = / Library / Java / Home

Anexe a localização do compilador Java ao caminho do sistema.

SO Resultado
janelas Anexar a string C:\Program Files\Java\jdk1.8.0_101\bin no final da variável do sistema, Path.
Linux exportar PATH = $ PATH: $ JAVA_HOME / bin /
Mac não requerido

Verifique a instalação do Java usando o comando java -version como explicado acima.

Etapa 3: Baixe o arquivo org.json

Baixe a versão mais recente do arquivo jar org.json em org.json @ MVNRepository . No momento de escrever este tutorial, baixamos json-20180813 e o copiamos para a pasta C: \> JSON.

SO Nome do arquivo
janelas json-20180813.jar
Linux json-20180813.jar
Mac json-20180813.jar

Etapa 4: definir o ambiente JSON_JAVA

Colocou o JSON_JAVAvariável de ambiente para apontar para o local do diretório base onde org.json jar está armazenado em sua máquina. Vamos supor que armazenamos json-20180813.jar na pasta JSON.

Sr. Não SO e descrição
1

Windows

Defina a variável de ambiente JSON_JAVA para C: \ JSON

2

Linux

export JSON_JAVA = / usr / local / JSON

3

Mac

export JSON_JAVA = / Library / JSON

Etapa 5: definir a variável CLASSPATH

Colocou o CLASSPATH variável de ambiente para apontar para o local do jar JSON.simple.

Sr. Não SO e descrição
1

Windows

Defina a variável de ambiente CLASSPATH como% 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 :.

A classe CDL fornece métodos estáticos para converter um texto delimitado por vírgulas em um JSONArray e vice-versa.

Os métodos a seguir são abordados no exemplo.

  • rowToJSONArray(String) - Converte um texto delimitado por vírgulas em objeto JSONArray.

  • rowToString(JSONArray) - Converte um JSONArray em texto delimitado por vírgulas.

  • toJSONArray(String) - Converte um texto de várias linhas delimitado por vírgulas em objetos de objetos JSONArray.

  • toJSONArray(JSONArray, String) - Converte um objeto JSONArray e texto delimitado por vírgulas em objeto JSONArray.

Exemplo

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));
   }
}

Resultado

["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"}]

A classe Cookie fornece métodos estáticos para converter o texto do cookie do navegador da web em um JSONObject e vice-versa.

Os métodos a seguir são abordados no exemplo.

  • toJSONObject(String) - Converte um texto de cookie em objeto JSONObject.

  • toString(JSONObject) - Converte um JSONObject em texto de cookie.

Exemplo

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));        
   }
}

Resultado

{"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=/

A classe CookieList fornece métodos estáticos para converter a Lista de Cookies em JSONObject e vice-versa. A Lista de Cookies é uma sequência de pares de nome / valor.

Os métodos a seguir são abordados no exemplo.

  • toJSONObject(String) - Converte um texto de lista de cookies em objeto JSONObject.

  • toString(JSONObject) - Converte um JSONObject em texto de lista de cookies.

Exemplo

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));
   }
}

Resultado

username=Mark Den
{"username":"Mark Den"}

A classe HTTP fornece métodos estáticos para converter o texto do cabeçalho do navegador da web em um JSONObject e vice-versa.

Os métodos a seguir são abordados no exemplo.

  • toJSONObject(String) - Converte um texto de cabeçalho em objeto JSONObject.

  • toString(JSONObject) - Converte um JSONObject em texto de cabeçalho.

Exemplo

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));
   }
}

Resultado

POST "http://www.tutorialspoint.com/" HTTP/1.1

{"Request-URI":"http://www.tutorialspoint.com/","Method":"POST","HTTP-Version":"HTTP/1.1"}

Um JSONArray é uma sequência ordenada de valores. Ele fornece métodos para acessar valores por índice e colocar valores. Os seguintes tipos são suportados -

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • Objeto JSONObject.NULL

Exemplo

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);
   }
}

Resultado

JSONArray: 
["foo",100,1000.21,true,null]

A classe JSONML fornece métodos estáticos para converter um texto XML em um JSONArray e vice-versa.

Os métodos a seguir são abordados no exemplo.

  • toJSONArray(String) - Converte um XML em objeto JSONArray.

  • toJSONObject(String) - Converte um XML em objeto JSONObject.

  • toString(JSONArray) - Fornece um XML de um objeto JSONArray.

  • toString(JSONObject) - Fornece um XML de um objeto JSONObject.

Exemplo

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);
   }
}

Resultado

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>

A classe JSONObject é uma coleção não ordenada de pares chave-valor. Ele fornece métodos para acessar valores por chave e colocar valores. Os seguintes tipos são suportados -

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • Objeto JSONObject.NULL

Exemplo

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);
   }
}

Resultado

{"Active":true,"Other Details":null,"ID":1,"Fees":1000.21,"list":["foo",100],"Name":"Robert"}

JSONStringer é uma classe de utilitário para construir um Texto JSON rapidamente que confirma as regras de sintaxe JSON. Cada instância de JSONStringer pode produzir um texto JSON.

Exemplo

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);
   }
}

Resultado

{"Name":"Robert"}
["Robert","Julia","Dan"]
["Robert","Julia","Dan",{"Name":"Robert"}]

A classe Property fornece métodos estáticos para converter texto de propriedades em um JSONObject e vice-versa.

Os métodos a seguir são abordados no exemplo.

  • toJSONObject(Properties) - Converte dados de propriedades em objeto JSONObject.

  • toProperties(JSONObject) - Converte um JSONObject em objeto de propriedades.

Exemplo

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));
   }
}

Resultado

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}

A classe XML fornece métodos estáticos para converter um texto XML em um JSONObject e vice-versa.

Os métodos a seguir são abordados no exemplo.

  • toJSONObject(String) - Converte um XML em objeto JSONArray.

  • toString(JSONObject) - Fornece um XML de um objeto JSONObject.

Exemplo

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));
   }
}

Resultado

<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"}

As classes utilitárias de org.json lançam JSONException em caso de JSON inválido. O exemplo a seguir mostra como lidar com JSONException.

Exemplo

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());
      }
   }
}

Resultado

position: 24
Unexpected token RIGHT BRACE(}) at position 24.