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.