org.json - szybki przewodnik

org.json or JSON-Javato prosty zestaw narzędzi oparty na języku Java dla formatu JSON. Możesz użyć org.json do kodowania lub dekodowania danych JSON.

funkcje

  • Specification Compliant - JSON.simple jest w pełni zgodny ze specyfikacją JSON - RFC4627.

  • Lightweight - Ma bardzo mało klas i zapewnia niezbędne funkcje, takie jak kodowanie / dekodowanie i ucieczka json.

  • XML Conversion - Zapewnia możliwość konwersji z formatu JSON na XML i odwrotnie.

  • HTTP Headers - Obsługuje konwersję nagłówka HTTP do JSON i odwrotnie.

  • Cookie - Zapewnia obsługę konwersji plików cookie do formatu JSON i odwrotnie.

  • CDL - Zapewnia obsługę konwersji listy oddzielonej przecinkami do formatu JSON i odwrotnie.

  • No dependency- Brak zależności od biblioteki zewnętrznej. Może być dołączany niezależnie.

  • Java 1.6-1.8 compatible - Kod źródłowy i plik binarny są kompatybilne z Javą 1.6-1.8

Konfiguracja środowiska lokalnego

JSON.simple to biblioteka dla Javy, więc pierwszym wymaganiem jest zainstalowanie JDK na komputerze.

Wymagania systemowe

JDK 1.5 lub nowszy.
Pamięć Brak minimalnych wymagań.
Miejsca na dysku Brak minimalnych wymagań.
System operacyjny Brak minimalnych wymagań.

Krok 1: Zweryfikuj instalację Java na swoim komputerze

Przede wszystkim otwórz konsolę i wykonaj polecenie java w oparciu o system operacyjny, na którym pracujesz.

OS Zadanie Komenda
Windows Otwórz konsolę poleceń c: \> java -version
Linux Otwórz terminal poleceń $ java -version
Prochowiec Otwórz Terminal maszyna: <joseph $ java -version

Sprawdźmy dane wyjściowe dla wszystkich systemów operacyjnych -

OS Wynik
Windows

wersja java „1.8.0_101”

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

Linux

wersja java „1.8.0_101”

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

Prochowiec

wersja java „1.8.0_101”

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

Jeśli nie masz zainstalowanej w systemie oprogramowania Java, pobierz pakiet Java Software Development Kit (SDK) z następującego łącza www.oracle.com . Zakładamy Java 1.8.0_101 jako zainstalowaną wersję tego samouczka.

Krok 2: Ustaw środowisko JAVA

Ustaw JAVA_HOMEzmienna środowiskowa wskazująca lokalizację katalogu podstawowego, w którym na komputerze jest zainstalowana Java. Na przykład.

OS Wynik
Windows Ustaw zmienną środowiskową JAVA_HOME na C: \ Program Files \ Java \ jdk1.8.0_101
Linux eksportuj JAVA_HOME = / usr / local / java-current
Prochowiec eksportuj JAVA_HOME = / Library / Java / Home

Dołącz lokalizację kompilatora Java do ścieżki systemowej.

OS Wynik
Windows Dołącz ciąg C:\Program Files\Java\jdk1.8.0_101\bin na końcu zmiennej systemowej, Path.
Linux export PATH = $ PATH: $ JAVA_HOME / bin /
Prochowiec nie wymagane

Sprawdź instalację oprogramowania Java za pomocą polecenia java -version jak wyjaśniono powyżej.

Krok 3: Pobierz archiwum org.json

Pobierz najnowszą wersję pliku jar org.json z witryny org.json @ MVNRepository . W czasie pisania tego samouczka pobraliśmy plik json-20180813 i skopiowaliśmy go do folderu C: \> JSON.

OS Nazwa archiwum
Windows json-20180813.jar
Linux json-20180813.jar
Prochowiec json-20180813.jar

Krok 4: Ustaw środowisko JSON_JAVA

Ustaw JSON_JAVAzmienna środowiskowa wskazująca lokalizację katalogu podstawowego, w którym plik jar org.json jest przechowywany na komputerze. Załóżmy, że zapisaliśmy plik json-20180813.jar w folderze JSON.

Sr.No System operacyjny i opis
1

Windows

Ustaw zmienną środowiskową JSON_JAVA na C: \ JSON

2

Linux

eksportuj JSON_JAVA = / usr / local / JSON

3

Mac

eksportuj JSON_JAVA = / Library / JSON

Krok 5: Ustaw zmienną CLASSPATH

Ustaw CLASSPATH zmienna środowiskowa wskazująca lokalizację jar JSON.simple.

Sr.No System operacyjny i opis
1

Windows

Ustaw zmienną środowiskową CLASSPATH na% CLASSPATH%;% JSON_JAVA% \ json-20180813.jar;.;

2

Linux

eksportuj CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-20180813.jar :.

3

Mac

eksportuj CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-20180813.jar :.

Klasa CDL zapewnia statyczne metody konwersji tekstu rozdzielanego przecinkami na JSONArray i odwrotnie.

W przykładzie omówiono następujące metody.

  • rowToJSONArray(String) - Konwertuje tekst rozdzielany przecinkami na obiekt JSONArray.

  • rowToString(JSONArray) - Konwertuje JSONArray na tekst rozdzielany przecinkami.

  • toJSONArray(String) - Konwertuje wielowierszowy tekst rozdzielany przecinkami na obiekt obiektów JSONArray.

  • toJSONArray(JSONArray, String) - Konwertuje obiekt JSONArray i tekst rozdzielany przecinkami na obiekt JSONArray.

Przykład

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

Wynik

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

Klasa Cookie udostępnia metody statyczne do konwersji tekstu pliku cookie przeglądarki internetowej na obiekt JSONObject i na odwrót.

W przykładzie omówiono następujące metody.

  • toJSONObject(String) - Konwertuje tekst cookie na obiekt JSONObject.

  • toString(JSONObject) - Konwertuje JSONObject na tekst pliku cookie.

Przykład

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

Wynik

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

Klasa CookieList udostępnia metody statyczne służące do konwertowania listy plików cookie na JSONObject i odwrotnie. Lista plików cookie to sekwencja par nazwa / wartość.

W przykładzie omówiono następujące metody.

  • toJSONObject(String) - Konwertuje tekst listy plików cookie na obiekt JSONObject.

  • toString(JSONObject) - Konwertuje JSONObject na tekst listy plików cookie.

Przykład

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

Wynik

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

Klasa HTTP udostępnia metody statyczne do konwersji tekstu nagłówka przeglądarki internetowej na obiekt JSONObject i na odwrót.

W przykładzie omówiono następujące metody.

  • toJSONObject(String) - Konwertuje tekst nagłówka na obiekt JSONObject.

  • toString(JSONObject) - Konwertuje JSONObject na tekst nagłówka.

Przykład

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

Wynik

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

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

JSONArray to uporządkowana sekwencja wartości. Zapewnia metody dostępu do wartości według indeksu i umieszczania wartości. Obsługiwane są następujące typy -

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • Obiekt JSONObject.NULL

Przykład

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

Wynik

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

Klasa JSONML udostępnia statyczne metody do konwersji tekstu XML na JSONArray i odwrotnie.

W przykładzie omówiono następujące metody.

  • toJSONArray(String) - Konwertuje XML na obiekt JSONArray.

  • toJSONObject(String) - Konwertuje XML na obiekt JSONObject.

  • toString(JSONArray) - Daje XML z obiektu JSONArray.

  • toString(JSONObject) - Daje XML z obiektu JSONObject.

Przykład

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

Wynik

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>

Klasa JSONObject to nieuporządkowana kolekcja par klucz-wartość. Zapewnia metody dostępu do wartości za pomocą klucza i umieszczania wartości. Obsługiwane są następujące typy -

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • Obiekt JSONObject.NULL

Przykład

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

Wynik

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

JSONStringer to klasa narzędziowa do szybkiego tworzenia tekstu JSON, który potwierdza reguły składni JSON. Każde wystąpienie JSONStringer może wygenerować jeden tekst JSON.

Przykład

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

Wynik

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

Klasa Property udostępnia metody statyczne do konwertowania tekstu właściwości na obiekt JSONObject i na odwrót.

W przykładzie omówiono następujące metody.

  • toJSONObject(Properties) - Konwertuje dane właściwości na obiekt JSONObject.

  • toProperties(JSONObject) - Konwertuje JSONObject na obiekt właściwości.

Przykład

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

Wynik

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}

Klasa XML udostępnia statyczne metody konwertowania tekstu XML na obiekt JSONObject i odwrotnie.

W przykładzie omówiono następujące metody.

  • toJSONObject(String) - Konwertuje XML na obiekt JSONArray.

  • toString(JSONObject) - Daje XML z obiektu JSONObject.

Przykład

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

Wynik

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

Klasy narzędziowe org.json generują wyjątek JSONException w przypadku nieprawidłowego JSON. Poniższy przykład pokazuje, jak obsługiwać JSONException.

Przykład

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

Wynik

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