org.json - คู่มือฉบับย่อ
org.json or JSON-Javaเป็นชุดเครื่องมือที่ใช้ Java อย่างง่ายสำหรับ JSON คุณสามารถใช้ org.json เพื่อเข้ารหัสหรือถอดรหัสข้อมูล JSON
คุณสมบัติ
Specification Compliant - JSON.simple เป็นไปตามข้อกำหนด JSON อย่างสมบูรณ์ - RFC4627
Lightweight - มีคลาสน้อยมากและมีฟังก์ชันที่จำเป็นเช่นเข้ารหัส / ถอดรหัสและหนี json
XML Conversion - ให้ความสามารถในการแปลงจาก JSON เป็น XML และในทางกลับกัน
HTTP Headers - รองรับการแปลง HTTP Header เป็น JSON และในทางกลับกัน
Cookie - ให้การสนับสนุนสำหรับการแปลงคุกกี้เป็น JSON และในทางกลับกัน
CDL - ให้การสนับสนุนในการแปลงรายการที่คั่นด้วยจุลภาคเป็น JSON และในทางกลับกัน
No dependency- ไม่มีการพึ่งพาไลบรารีภายนอก สามารถรวมได้อย่างอิสระ
Java 1.6-1.8 compatible - ซอร์สโค้ดและไบนารีเข้ากันได้กับ Java 1.6-1.8
การตั้งค่าสภาพแวดล้อมท้องถิ่น
JSON.simple เป็นไลบรารีสำหรับ Java ดังนั้นข้อกำหนดแรกสุดคือต้องติดตั้ง JDK ในเครื่องของคุณ
ความต้องการของระบบ
JDK | 1.5 ขึ้นไป |
---|---|
หน่วยความจำ | ไม่มีข้อกำหนดขั้นต่ำ |
พื้นที่ดิสก์ | ไม่มีข้อกำหนดขั้นต่ำ |
ระบบปฏิบัติการ | ไม่มีข้อกำหนดขั้นต่ำ |
ขั้นตอนที่ 1: ตรวจสอบการติดตั้ง Java ในเครื่องของคุณ
ก่อนอื่นให้เปิดคอนโซลและดำเนินการคำสั่ง java ตามระบบปฏิบัติการที่คุณกำลังทำงานอยู่
ระบบปฏิบัติการ | งาน | คำสั่ง |
---|---|---|
Windows | เปิด Command Console | c: \> java - เวอร์ชัน |
ลินุกซ์ | เปิด Command Terminal | $ java - รุ่น |
Mac | เปิด Terminal | เครื่อง: <joseph $ java -version |
มาตรวจสอบผลลัพธ์สำหรับระบบปฏิบัติการทั้งหมด -
ระบบปฏิบัติการ | เอาต์พุต |
---|---|
Windows | เวอร์ชัน java "1.8.0_101" สภาพแวดล้อมรันไทม์ Java (TM) SE (สร้าง 1.8.0_101) |
ลินุกซ์ | เวอร์ชัน java "1.8.0_101" สภาพแวดล้อมรันไทม์ Java (TM) SE (สร้าง 1.8.0_101) |
Mac | เวอร์ชัน java "1.8.0_101" สภาพแวดล้อมรันไทม์ Java (TM) SE (สร้าง 1.8.0_101) |
หากคุณไม่ได้มี Java ติดตั้งในระบบของคุณแล้วดาวน์โหลด Java Software Development Kit (SDK) จากลิงค์ต่อไปwww.oracle.com เราถือว่า Java 1.8.0_101 เป็นเวอร์ชันที่ติดตั้งสำหรับบทช่วยสอนนี้
ขั้นตอนที่ 2: ตั้งค่าสภาพแวดล้อม JAVA
ตั้งค่า JAVA_HOMEตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่ติดตั้ง Java บนเครื่องของคุณ ตัวอย่างเช่น.
ระบบปฏิบัติการ | เอาต์พุต |
---|---|
Windows | ตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME เป็น C: \ Program Files \ Java \ jdk1.8.0_101 |
ลินุกซ์ | ส่งออก JAVA_HOME = / usr / local / java-current |
Mac | ส่งออก JAVA_HOME = / Library / Java / Home |
ผนวกตำแหน่งคอมไพเลอร์ Java เข้ากับ System Path
ระบบปฏิบัติการ | เอาต์พุต |
---|---|
Windows | ต่อท้ายสตริง C:\Program Files\Java\jdk1.8.0_101\bin ในตอนท้ายของตัวแปรระบบ Path. |
ลินุกซ์ | ส่งออก PATH = $ PATH: $ JAVA_HOME / bin / |
Mac | ไม่จำเป็นต้องใช้ |
ตรวจสอบการติดตั้ง Java โดยใช้คำสั่ง java -version ตามที่อธิบายไว้ข้างต้น
ขั้นตอนที่ 3: ดาวน์โหลด org.json Archive
ดาวน์โหลดเวอร์ชันล่าสุดของไฟล์ขวด org.json จากorg.json @ MVNRepository ในขณะที่เขียนบทช่วยสอนนี้เราได้ดาวน์โหลด json-20180813 และคัดลอกลงในโฟลเดอร์ C: \> JSON
ระบบปฏิบัติการ | ชื่อที่เก็บถาวร |
---|---|
Windows | json-20180813.jar |
ลินุกซ์ | json-20180813.jar |
Mac | json-20180813.jar |
ขั้นตอนที่ 4: ตั้งค่าสภาพแวดล้อม JSON_JAVA
ตั้งค่า JSON_JAVAตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่เก็บ org.json jar ไว้ในเครื่องของคุณ สมมติว่าเราเก็บ json-20180813.jar ไว้ในโฟลเดอร์ JSON
ซีเนียร์ No | ระบบปฏิบัติการและคำอธิบาย |
---|---|
1 | Windows ตั้งค่าตัวแปรสภาพแวดล้อม JSON_JAVA เป็น C: \ JSON |
2 | Linux ส่งออก JSON_JAVA = / usr / local / JSON |
3 | Mac ส่งออก JSON_JAVA = / Library / JSON |
ขั้นตอนที่ 5: ตั้งค่าตัวแปร CLASSPATH
ตั้งค่า CLASSPATH ตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่ง JSON.simple jar
ซีเนียร์ No | ระบบปฏิบัติการและคำอธิบาย |
---|---|
1 | Windows ตั้งค่าตัวแปรสภาพแวดล้อม CLASSPATH เป็น% CLASSPATH%;% JSON_JAVA% \ json-20180813.jar; .; |
2 | Linux ส่งออก CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-20180813.jar:. |
3 | Mac ส่งออก CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-20180813.jar:. |
คลาส CDL มีวิธีการคงที่ในการแปลงข้อความที่คั่นด้วยจุลภาคเป็น JSONArray และในทางกลับกัน
วิธีการต่อไปนี้ครอบคลุมในตัวอย่าง
rowToJSONArray(String) - แปลงข้อความที่คั่นด้วยจุลภาคเป็น JSONArray Object
rowToString(JSONArray) - แปลง JSONArray เป็นข้อความที่คั่นด้วยจุลภาค
toJSONArray(String) - แปลงข้อความที่คั่นด้วยจุลภาคหลายบรรทัดเป็น Object ของออบเจ็กต์ JSONArray
toJSONArray(JSONArray, String) - แปลง JSONArray Object และข้อความคั่นด้วยจุลภาคเป็น JSONArray Object
ตัวอย่าง
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));
}
}
เอาต์พุต
["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"}]
คลาสคุกกี้มีวิธีการคงที่ในการแปลงข้อความคุกกี้ของเว็บเบราว์เซอร์เป็น JSONObject และในทางกลับกัน
วิธีการต่อไปนี้ครอบคลุมในตัวอย่าง
toJSONObject(String) - แปลงข้อความคุกกี้เป็น JSONObject Object
toString(JSONObject) - แปลง JSONObject เป็นข้อความคุกกี้
ตัวอย่าง
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));
}
}
เอาต์พุต
{"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=/
คลาส CookieList มีวิธีการแบบคงที่ในการแปลงรายการคุกกี้เป็น JSONObject และในทางกลับกัน รายการคุกกี้คือลำดับของคู่ชื่อ / ค่า
วิธีการต่อไปนี้ครอบคลุมในตัวอย่าง
toJSONObject(String) - แปลงข้อความรายการคุกกี้เป็น JSONObject Object
toString(JSONObject) - แปลง JSONObject เป็นข้อความรายการคุกกี้
ตัวอย่าง
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));
}
}
เอาต์พุต
username=Mark Den
{"username":"Mark Den"}
คลาส HTTP มีวิธีการแบบคงที่ในการแปลงข้อความส่วนหัวของเว็บเบราว์เซอร์เป็น JSONObject และในทางกลับกัน
วิธีการต่อไปนี้ครอบคลุมในตัวอย่าง
toJSONObject(String) - แปลงข้อความส่วนหัวเป็น JSONObject Object
toString(JSONObject) - แปลง JSONObject เป็นข้อความส่วนหัว
ตัวอย่าง
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));
}
}
เอาต์พุต
POST "http://www.tutorialspoint.com/" HTTP/1.1
{"Request-URI":"http://www.tutorialspoint.com/","Method":"POST","HTTP-Version":"HTTP/1.1"}
JSONArray คือลำดับของค่า มีวิธีการเข้าถึงค่าโดยดัชนีและใส่ค่า รองรับประเภทต่อไปนี้ -
Boolean
JSONArray
JSONObject
Number
String
JSONObject.NULL วัตถุ
ตัวอย่าง
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);
}
}
เอาต์พุต
JSONArray:
["foo",100,1000.21,true,null]
คลาส JSONML จัดเตรียมเมธอดแบบคงที่เพื่อแปลงข้อความ XML เป็น JSONArray และในทางกลับกัน
วิธีการต่อไปนี้ครอบคลุมในตัวอย่าง
toJSONArray(String) - แปลง XML เป็น JSONArray Object
toJSONObject(String) - แปลง XML เป็น JSONObject Object
toString(JSONArray) - ให้ XML จากวัตถุ JSONArray
toString(JSONObject) - ให้ XML จากวัตถุ JSONObject
ตัวอย่าง
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);
}
}
เอาต์พุต
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>
คลาส JSONObject คือคอลเล็กชันคู่คีย์ - ค่าที่ไม่เรียงลำดับ มีวิธีการเข้าถึงค่าด้วยคีย์และเพื่อใส่ค่า รองรับประเภทต่อไปนี้ -
Boolean
JSONArray
JSONObject
Number
String
JSONObject.NULL วัตถุ
ตัวอย่าง
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);
}
}
เอาต์พุต
{"Active":true,"Other Details":null,"ID":1,"Fees":1000.21,"list":["foo",100],"Name":"Robert"}
JSONStringer เป็นคลาสยูทิลิตี้สำหรับสร้างข้อความ JSON อย่างรวดเร็วซึ่งยืนยันกับกฎไวยากรณ์ JSON JSONStringer แต่ละอินสแตนซ์สามารถสร้างข้อความ JSON ได้หนึ่งข้อความ
ตัวอย่าง
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);
}
}
เอาต์พุต
{"Name":"Robert"}
["Robert","Julia","Dan"]
["Robert","Julia","Dan",{"Name":"Robert"}]
คลาสคุณสมบัติมีวิธีการแบบคงที่ในการแปลงข้อความคุณสมบัติเป็น JSONObject และในทางกลับกัน
วิธีการต่อไปนี้ครอบคลุมในตัวอย่าง
toJSONObject(Properties) - แปลงข้อมูลคุณสมบัติเป็น JSONObject Object
toProperties(JSONObject) - แปลง JSONObject เป็น property object
ตัวอย่าง
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));
}
}
เอาต์พุต
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}
คลาส XML จัดเตรียมเมธอดแบบคงที่ในการแปลงข้อความ XML เป็น JSONObject และในทางกลับกัน
วิธีการต่อไปนี้ครอบคลุมในตัวอย่าง
toJSONObject(String) - แปลง XML เป็น JSONArray Object
toString(JSONObject) - ให้ XML จากวัตถุ JSONObject
ตัวอย่าง
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));
}
}
เอาต์พุต
<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"}
คลาสยูทิลิตี้ของ org.json พ่น JSONException ในกรณีที่ JSON ไม่ถูกต้อง ตัวอย่างต่อไปนี้แสดงวิธีจัดการ JSONException
ตัวอย่าง
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());
}
}
}
เอาต์พุต
position: 24
Unexpected token RIGHT BRACE(}) at position 24.