org.json - Guida rapida

org.json or JSON-Javaè un semplice toolkit basato su Java per JSON. Puoi utilizzare org.json per codificare o decodificare i dati JSON.

Caratteristiche

  • Specification Compliant - JSON.simple è completamente conforme alla specifica JSON - RFC4627.

  • Lightweight - Ha pochissime classi e fornisce le funzionalità necessarie come codifica / decodifica e json di escape.

  • XML Conversion - Fornisce capacità di conversione da JSON a XML e viceversa.

  • HTTP Headers - Supporta la conversione dell'intestazione HTTP in JSON e viceversa.

  • Cookie - Fornisce supporto per la conversione dei cookie in JSON e viceversa.

  • CDL - Fornisce supporto per convertire elenchi separati da virgole in JSON e viceversa.

  • No dependency- Nessuna dipendenza da libreria esterna. Può essere incluso indipendentemente.

  • Java 1.6-1.8 compatible - Il codice sorgente e il binario sono compatibili con Java 1.6-1.8

Configurazione dell'ambiente locale

JSON.simple è una libreria per Java, quindi il primo requisito è avere JDK installato nella tua macchina.

Requisito del sistema

JDK 1.5 o superiore.
Memoria Nessun requisito minimo.
Spazio sul disco Nessun requisito minimo.
Sistema operativo Nessun requisito minimo.

Passaggio 1: verifica l'installazione di Java sulla macchina

Prima di tutto, apri la console ed esegui un comando java basato sul sistema operativo su cui stai lavorando.

OS Compito Comando
finestre Apri la Console di comando c: \> java -version
Linux Apri Terminale di comando $ java -version
Mac Apri Terminale macchina: <joseph $ java -version

Verifichiamo l'output per tutti i sistemi operativi -

OS Produzione
finestre

versione java "1.8.0_101"

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

Linux

versione java "1.8.0_101"

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

Mac

versione java "1.8.0_101"

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

Se non hai Java installato sul tuo sistema, scarica il Java Software Development Kit (SDK) dal seguente collegamento www.oracle.com . Stiamo assumendo Java 1.8.0_101 come versione installata per questo tutorial.

Passaggio 2: impostare l'ambiente JAVA

Impostare il JAVA_HOMEvariabile di ambiente in modo che punti alla posizione della directory di base in cui Java è installato sulla macchina. Per esempio.

OS Produzione
finestre Imposta la variabile d'ambiente JAVA_HOME su C: \ Program Files \ Java \ jdk1.8.0_101
Linux export JAVA_HOME = / usr / local / java-current
Mac export JAVA_HOME = / Library / Java / Home

Aggiungi la posizione del compilatore Java al percorso di sistema.

OS Produzione
finestre Aggiungi la stringa C:\Program Files\Java\jdk1.8.0_101\bin alla fine della variabile di sistema, Path.
Linux export PATH = $ PATH: $ JAVA_HOME / bin /
Mac non richiesto

Verifica l'installazione di Java utilizzando il comando java -version come spiegato sopra.

Passaggio 3: scarica l'archivio org.json

Scarica l'ultima versione del file jar org.json da org.json @ MVNRepository . Al momento della stesura di questo tutorial, abbiamo scaricato json-20180813 e lo abbiamo copiato nella cartella C: \> JSON.

OS Nome dell'archivio
finestre json-20180813.jar
Linux json-20180813.jar
Mac json-20180813.jar

Passaggio 4: impostare l'ambiente JSON_JAVA

Impostare il JSON_JAVAvariabile di ambiente in modo che punti alla posizione della directory di base in cui il jar org.json è memorizzato sulla macchina. Supponiamo di aver memorizzato json-20180813.jar nella cartella JSON.

Suor n Sistema operativo e descrizione
1

Windows

Imposta la variabile d'ambiente JSON_JAVA su C: \ JSON

2

Linux

esporta JSON_JAVA = / usr / local / JSON

3

Mac

esporta JSON_JAVA = / Library / JSON

Passaggio 5: impostare la variabile CLASSPATH

Impostare il CLASSPATH variabile di ambiente in modo che punti alla posizione jar JSON.simple.

Suor n Sistema operativo e descrizione
1

Windows

Imposta la variabile d'ambiente CLASSPATH su% 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 classe CDL fornisce metodi statici per convertire un testo delimitato da virgole in un JSONArray e viceversa.

I seguenti metodi sono trattati nell'esempio.

  • rowToJSONArray(String) - Converte un testo delimitato da virgole in un oggetto JSONArray.

  • rowToString(JSONArray) - Converte un JSONArray in testo delimitato da virgole.

  • toJSONArray(String) - Converte un testo delimitato da virgole su più righe in Object of JSONArray objects.

  • toJSONArray(JSONArray, String) - Converte un oggetto JSONArray e un testo delimitato da virgole in un oggetto JSONArray.

Esempio

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

Produzione

["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 classe Cookie fornisce metodi statici per convertire il testo del cookie del browser Web in un JSONObject e viceversa.

I seguenti metodi sono trattati nell'esempio.

  • toJSONObject(String) - Converte un testo di cookie in un oggetto JSONObject.

  • toString(JSONObject) - Converte un JSONObject in testo cookie.

Esempio

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

Produzione

{"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 classe CookieList fornisce metodi statici per convertire l'elenco dei cookie in JSONObject e viceversa. L'elenco dei cookie è una sequenza di coppie nome / valore.

I seguenti metodi sono trattati nell'esempio.

  • toJSONObject(String) - Converte il testo di un elenco di cookie in un oggetto JSONObject.

  • toString(JSONObject) - Converte un JSONObject nel testo dell'elenco dei cookie.

Esempio

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

Produzione

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

La classe HTTP fornisce metodi statici per convertire il testo dell'intestazione del browser Web in un JSONObject e viceversa.

I seguenti metodi sono trattati nell'esempio.

  • toJSONObject(String) - Converte un testo di intestazione in un oggetto JSONObject.

  • toString(JSONObject) - Converte un oggetto JSONObject in testo di intestazione.

Esempio

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

Produzione

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

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

Un JSONArray è una sequenza ordinata di valori. Fornisce metodi per accedere ai valori per indice e per inserire valori. Sono supportati i seguenti tipi:

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • Oggetto JSONObject.NULL

Esempio

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

Produzione

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

La classe JSONML fornisce metodi statici per convertire un testo XML in un JSONArray e viceversa.

I seguenti metodi sono trattati nell'esempio.

  • toJSONArray(String) - Converte un XML in un oggetto JSONArray.

  • toJSONObject(String) - Converte un XML in un oggetto JSONObject.

  • toString(JSONArray) - Fornisce un XML da un oggetto JSONArray.

  • toString(JSONObject) - Fornisce un XML da un oggetto JSONObject.

Esempio

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

Produzione

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 classe JSONObject è una raccolta non ordinata di coppie chiave-valore. Fornisce metodi per accedere ai valori tramite chiave e per inserire valori. Sono supportati i seguenti tipi:

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • Oggetto JSONObject.NULL

Esempio

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

Produzione

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

JSONStringer è una classe di utilità per creare rapidamente un testo JSON che conferma le regole di sintassi JSON. Ogni istanza di JSONStringer può produrre un testo JSON.

Esempio

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

Produzione

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

La classe di proprietà fornisce metodi statici per convertire il testo delle proprietà in un oggetto JSONObject e viceversa.

I seguenti metodi sono trattati nell'esempio.

  • toJSONObject(Properties) - Converte i dati delle proprietà in un oggetto JSONObject.

  • toProperties(JSONObject) - Converte un oggetto JSONObject in un oggetto proprietà.

Esempio

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

Produzione

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 classe XML fornisce metodi statici per convertire un testo XML in un JSONObject e viceversa.

I seguenti metodi sono trattati nell'esempio.

  • toJSONObject(String) - Converte un XML in un oggetto JSONArray.

  • toString(JSONObject) - Fornisce un XML da un oggetto JSONObject.

Esempio

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

Produzione

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

Le classi di utilità di org.json generano JSONException in caso di JSON non valido. L'esempio seguente mostra come gestire JSONException.

Esempio

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

Produzione

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