org.json - Hướng dẫn nhanh

org.json or JSON-Javalà một bộ công cụ dựa trên Java đơn giản cho JSON. Bạn có thể sử dụng org.json để mã hóa hoặc giải mã dữ liệu JSON.

Đặc trưng

  • Specification Compliant - JSON.simple hoàn toàn tuân thủ Đặc điểm kỹ thuật JSON - RFC4627.

  • Lightweight - Nó có rất ít lớp và cung cấp các chức năng cần thiết như mã hóa / giải mã và thoát json.

  • XML Conversion - Nó cung cấp khả năng chuyển đổi từ JSON sang XML và ngược lại.

  • HTTP Headers - Hỗ trợ chuyển đổi HTTP Header sang JSON và ngược lại.

  • Cookie - Cung cấp hỗ trợ chuyển đổi Cookie sang JSON và ngược lại.

  • CDL - Cung cấp hỗ trợ để chuyển đổi danh sách được phân tách bằng dấu phẩy sang JSON và ngược lại.

  • No dependency- Không phụ thuộc thư viện bên ngoài. Có thể được bao gồm độc lập.

  • Java 1.6-1.8 compatible - Mã nguồn và mã nhị phân tương thích với Java 1.6-1.8

Thiết lập môi trường cục bộ

JSON.simple là một thư viện dành cho Java, vì vậy yêu cầu đầu tiên là phải cài đặt JDK trong máy của bạn.

Yêu cầu hệ thống

JDK 1,5 trở lên.
Ký ức Không có yêu cầu tối thiểu.
Dung lượng đĩa Không có yêu cầu tối thiểu.
Hệ điều hành Không có yêu cầu tối thiểu.

Bước 1: Xác minh cài đặt Java trong máy của bạn

Trước hết, mở bảng điều khiển và thực hiện một lệnh java dựa trên hệ điều hành bạn đang làm việc.

Hệ điều hành Bài tập Chỉ huy
các cửa sổ Mở bảng điều khiển lệnh c: \> java -version
Linux Mở Command Terminal $ java -version
Mac Mở thiết bị đầu cuối máy: <joseph $ java -version

Hãy xác minh kết quả đầu ra cho tất cả các hệ điều hành -

Hệ điều hành Đầu ra
các cửa sổ

phiên bản java "1.8.0_101"

Môi trường thời gian chạy Java (TM) SE (bản dựng 1.8.0_101)

Linux

phiên bản java "1.8.0_101"

Môi trường thời gian chạy Java (TM) SE (bản dựng 1.8.0_101)

Mac

phiên bản java "1.8.0_101"

Môi trường thời gian chạy Java (TM) SE (bản dựng 1.8.0_101)

Nếu bạn chưa cài đặt Java trên hệ thống của mình, hãy tải xuống Bộ phát triển phần mềm Java (SDK) từ liên kết sau www.oracle.com . Chúng tôi giả sử Java 1.8.0_101 là phiên bản đã cài đặt cho hướng dẫn này.

Bước 2: Đặt Môi trường JAVA

Đặt JAVA_HOMEbiến môi trường để trỏ đến vị trí thư mục cơ sở nơi Java được cài đặt trên máy của bạn. Ví dụ.

Hệ điều hành Đầu ra
các cửa sổ Đặt biến môi trường JAVA_HOME thành C: \ Program Files \ Java \ jdk1.8.0_101
Linux xuất JAVA_HOME = / usr / local / java-current
Mac export JAVA_HOME = / Library / Java / Home

Nối vị trí trình biên dịch Java vào Đường dẫn Hệ thống.

Hệ điều hành Đầu ra
các cửa sổ Nối chuỗi C:\Program Files\Java\jdk1.8.0_101\bin ở cuối biến hệ thống, Path.
Linux xuất PATH = $ PATH: $ JAVA_HOME / bin /
Mac không yêu cầu

Xác minh cài đặt Java bằng lệnh java -version Như đã giải thích ở trên.

Bước 3: Tải xuống tệp lưu trữ org.json

Tải xuống phiên bản mới nhất của tệp jar org.json từ org.json @ MVNRepository . Tại thời điểm viết hướng dẫn này, chúng tôi đã tải xuống json-20180813 và sao chép nó vào thư mục C: \> JSON.

Hệ điều hành Tên lưu trữ
các cửa sổ json-20180813.jar
Linux json-20180813.jar
Mac json-20180813.jar

Bước 4: Đặt Môi trường JSON_JAVA

Đặt JSON_JAVAbiến môi trường để trỏ đến vị trí thư mục cơ sở nơi lưu trữ jar org.json trên máy của bạn. Giả sử chúng ta đã lưu trữ json-20180813.jar trong thư mục JSON.

Sr.No Hệ điều hành & Mô tả
1

Windows

Đặt biến môi trường JSON_JAVA thành C: \ JSON

2

Linux

xuất JSON_JAVA = / usr / local / JSON

3

Mac

xuất JSON_JAVA = / Library / JSON

Bước 5: Đặt biến CLASSPATH

Đặt CLASSPATH biến môi trường để trỏ đến vị trí jar JSON.simple.

Sr.No Hệ điều hành & Mô tả
1

Windows

Đặt biến môi trường CLASSPATH thành% CLASSPATH%;% JSON_JAVA% \ json-20180813.jar;.;

2

Linux

xuất CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-20180813.jar:.

3

Mac

xuất CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-20180813.jar:.

Lớp CDL cung cấp các phương thức tĩnh để chuyển đổi văn bản được phân tách bằng dấu phẩy thành JSONArray và ngược lại.

Các phương pháp sau được đề cập trong ví dụ.

  • rowToJSONArray(String) - Chuyển đổi văn bản được phân tách bằng dấu phẩy thành Đối tượng JSONArray.

  • rowToString(JSONArray) - Chuyển đổi JSONArray thành văn bản được phân tách bằng dấu phẩy.

  • toJSONArray(String) - Chuyển đổi văn bản được phân tách bằng dấu phẩy nhiều dòng thành Đối tượng của các đối tượng JSONArray.

  • toJSONArray(JSONArray, String) - Chuyển đổi một Đối tượng JSONArray và văn bản được phân tách bằng dấu phẩy thành Đối tượng JSONArray.

Thí dụ

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

Đầu ra

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

Lớp Cookie cung cấp các phương thức tĩnh để chuyển đổi văn bản cookie của trình duyệt web thành một JSONObject và ngược lại.

Các phương pháp sau được đề cập trong ví dụ.

  • toJSONObject(String) - Chuyển đổi văn bản cookie thành Đối tượng JSONObject.

  • toString(JSONObject) - Chuyển đổi một JSONObject thành văn bản cookie.

Thí dụ

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

Đầu ra

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

Lớp CookieList cung cấp các phương thức tĩnh để chuyển đổi Cookie List thành JSONObject và ngược lại. Cookie List là một chuỗi các cặp tên / giá trị.

Các phương pháp sau được đề cập trong ví dụ.

  • toJSONObject(String) - Chuyển đổi văn bản danh sách cookie thành Đối tượng JSONObject.

  • toString(JSONObject) - Chuyển đổi JSONObject thành văn bản danh sách cookie.

Thí dụ

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

Đầu ra

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

Lớp HTTP cung cấp các phương thức tĩnh để chuyển đổi văn bản tiêu đề của trình duyệt web thành một JSONObject và ngược lại.

Các phương pháp sau được đề cập trong ví dụ.

  • toJSONObject(String) - Chuyển đổi văn bản tiêu đề thành Đối tượng JSONObject.

  • toString(JSONObject) - Chuyển đổi một JSONObject thành văn bản tiêu đề.

Thí dụ

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

Đầu ra

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

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

JSONArray là một chuỗi giá trị có thứ tự. Nó cung cấp các phương thức để truy cập giá trị theo chỉ mục và đặt giá trị. Các loại sau được hỗ trợ:

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • Đối tượng JSONObject.NULL

Thí dụ

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

Đầu ra

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

Lớp JSONML cung cấp các phương thức tĩnh để chuyển đổi một văn bản XML thành một JSONArray và ngược lại.

Các phương pháp sau được đề cập trong ví dụ.

  • toJSONArray(String) - Chuyển đổi XML thành Đối tượng JSONArray.

  • toJSONObject(String) - Chuyển đổi XML thành Đối tượng JSONObject.

  • toString(JSONArray) - Cung cấp một XML từ một Đối tượng JSONArray.

  • toString(JSONObject) - Cung cấp một XML từ một Đối tượng JSONObject.

Thí dụ

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

Đầu ra

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>

Lớp JSONObject là một tập hợp các cặp khóa-giá trị không có thứ tự. Nó cung cấp các phương thức để truy cập giá trị bằng khóa và đặt giá trị. Các loại sau được hỗ trợ:

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • Đối tượng JSONObject.NULL

Thí dụ

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

Đầu ra

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

JSONStringer là một lớp tiện ích để xây dựng một Văn bản JSON một cách nhanh chóng xác nhận các quy tắc Cú pháp JSON. Mỗi phiên bản của JSONStringer có thể tạo ra một văn bản JSON.

Thí dụ

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

Đầu ra

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

Lớp thuộc tính cung cấp các phương thức tĩnh để chuyển đổi văn bản thuộc tính thành một JSONObject và ngược lại.

Các phương pháp sau được đề cập trong ví dụ.

  • toJSONObject(Properties) - Chuyển đổi dữ liệu thuộc tính thành Đối tượng JSONObject.

  • toProperties(JSONObject) - Chuyển đổi một JSONObject thành đối tượng thuộc tính.

Thí dụ

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

Đầu ra

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}

Lớp XML cung cấp các phương thức tĩnh để chuyển đổi một văn bản XML thành một JSONObject và ngược lại.

Các phương pháp sau được đề cập trong ví dụ.

  • toJSONObject(String) - Chuyển đổi XML thành Đối tượng JSONArray.

  • toString(JSONObject) - Cung cấp một XML từ một Đối tượng JSONObject.

Thí dụ

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

Đầu ra

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

Các lớp tiện ích của org.json ném JSONException trong trường hợp JSON không hợp lệ. Ví dụ sau cho thấy cách xử lý JSONException.

Thí dụ

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

Đầu ra

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