1. JSON-LIB เป็นไลบรารีคลาส Java ที่ให้ฟังก์ชั่นของการแปลงวัตถุ Java รวมถึงถั่วแผนที่คอลเลกชันอาร์เรย์ Java และ XML เป็น JSON หรือการแปลงย้อนกลับ
2. Json-Lib หน้าแรก: http://json-lib.sourceforge.net/
3. สภาพแวดล้อมการดำเนินการ
จำเป็นต้องมีการสนับสนุนห้องสมุดต่อไปนี้
Commons-Lang 2.5
Commons-Beanutils 1.8.0
collections คอมมอนส์ 3.2.1
คอมมอนส์ล็อก 1.1.1
Ezmorph 1.0.6
4. ตัวอย่างการทำงาน
นี่คือตัวอย่างรหัสที่กำหนดโดยตัวอย่าง Junit-case
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ com.mai.json;
นำเข้า org.junit.assert.assertequals;
นำเข้า java.util.arraylist;
นำเข้า java.util.date;
นำเข้า java.util.hashmap;
นำเข้า java.util.iterator;
นำเข้า java.util.list;
นำเข้า java.util.map;
นำเข้า net.sf.ezmorph.morpher;
นำเข้า net.sf.ezmorph.morpherregistry;
นำเข้า net.sf.ezmorph.bean.beanmorpher;
นำเข้า net.sf.json.jsonarray;
นำเข้า net.sf.json.jsonobject;
นำเข้า net.sf.json.util.jsonutils;
นำเข้า org.apache.commons.beanutils.propertyutils;
นำเข้า org.junit.test;
คลาสสาธารณะ JsonLibtest {
-
* ประเภทปกติรายการรายการคอลเลกชัน ฯลฯ ทั้งหมดจะแยกวิเคราะห์โดยใช้ JsonArray
-
* แผนที่และประเภทที่กำหนดเองถูกแยกวิเคราะห์โดยใช้ JsonObject
* แผนที่สามารถเข้าใจได้ว่าเป็นวัตถุและคู่คีย์/ค่าภายในสามารถเข้าใจได้ว่าเป็นแอตทริบิวต์/ค่าแอตทริบิวต์ของวัตถุ
* นั่นคือ {key1: value1, key2, value2 ... }
-
* 1. jsonObject เป็นชื่อ: การรวบรวมค่า
* ผ่าน getJsonObject (คีย์) คุณสามารถรับ jsonObject -> แปลงเป็นแผนที่
* ผ่าน getjsonarray (กุญแจ) คุณจะได้รับ jsonarray
-
-
-
// โดยทั่วไปแปลงอาร์เรย์เป็น JSON
@ทดสอบ
โมฆะสาธารณะ testarraytojson () {
บูลีน [] boolarray = บูลีนใหม่ [] {true, false, true};
jsonArray jsonarray = jsonarray.fromobject (boolarray);
System.out.println (jsonarray);
// prints [true, false, true]
-
// แปลงวัตถุคอลเลกชันเป็น JSON
@ทดสอบ
โมฆะสาธารณะ TestListTojson () {
รายการรายการ = new ArrayList ();
list.add ("First");
list.add ("สอง");
jsonArray jsonarray = jsonarray.fromobject (รายการ);
System.out.println (jsonarray);
// prints ["First", "Second"]
-
// แปลงสตริง JSON เป็น JSON ขึ้นอยู่กับสถานการณ์ใช้ JSONARRAY หรือ JSONObject
@ทดสอบ
โมฆะสาธารณะ testjsonstrojson () {
jsonArray jsonarray = jsonarray.fromobject ("['json', 'คือ', 'easy']");
System.out.println (jsonarray);
// prints ["json", "คือ", "easy"]
-
// แปลงแผนที่เป็น JSON โดยใช้ jsonObject
@ทดสอบ
Public Void TestMaptojson () {
แผนที่แผนที่ = ใหม่ hashmap ();
map.put ("ชื่อ", "JSON");
map.put ("bool", boolean.true);
map.put ("int", จำนวนเต็มใหม่ (1));
map.put ("arr", สตริงใหม่ [] {"a", "b"});
map.put ("func", "ฟังก์ชั่น (i) {return this.arr [i];}");
jsonObject jsonObject = jsonObject.FromObject (แผนที่);
System.out.println (jsonobject);
-
// ถั่วชนิดผสมลงใน JSON
@ทดสอบ
Public Void Testbeadtojson () {
MyBean Bean = new MyBean ();
Bean.setId ("001");
Bean.setName ("บัตรธนาคาร");
Bean.setDate (วันที่ใหม่ ());
list cardnum = new ArrayList ();
Cardnum.add ("ธนาคารเกษตร");
Cardnum.add ("ICBC");
Cardnum.add ("CCB");
Cardnum.add (คนใหม่ ("ทดสอบ"));
Bean.setCardnum (Cardnum);
jsonObject jsonObject = jsonObject.fromobject (ถั่ว);
System.out.println (jsonobject);
-
// แปลง JSON ของประเภทปกติเป็นวัตถุ
@ทดสอบ
Public Void TestJSontooBject () โยนข้อยกเว้น {
string json = "{name =/" json/", bool: true, int: 1, double: 2.2, function: function (a) {return a;}, array: [1,2]}";
jsonObject jsonObject = jsonObject.fromobject (JSON);
System.out.println (jsonobject);
Object Bean = jsonobject.tobean (jsonobject);
assertequals (jsonobject.get ("ชื่อ"), PropertyUtils.getProperty (ถั่ว, "ชื่อ"));
assertequals (jsonobject.get ("bool"), propertyutils.getProperty (ถั่ว, "bool"));
assertequals (jsonobject.get ("int"), propertyUtils.getProperty (ถั่ว, "int"));
assertequals (jsonobject.get ("double"), propertyUtils.getProperty (ถั่ว, "double"));
assertequals (jsonobject.get ("func"), propertyUtils.getProperty (ถั่ว, "func"));
System.out.println (PropertyUtils.getProperty (Bean, "Name"));
System.out.println (PropertyUtils.getProperty (ถั่ว, "bool"));
System.out.println (PropertyUtils.getProperty (ถั่ว, "int"));
System.out.println (PropertyUtils.getProperty (Bean, "Double"));
System.out.println (PropertyUtils.getProperty (Bean, "Func"));
System.out.println (PropertyUtils.getProperty (Bean, "Array"));
รายการ arrayList = (รายการ) jsonArray.tocollection (jsonobject.getjsonarray ("อาร์เรย์"));
สำหรับ (วัตถุวัตถุ: arraylist) {
System.out.println (วัตถุ);
-
-
// แยกวิเคราะห์ JSON เป็นวัตถุประเภทคอมโพสิตรวมถึงรายการ
@ทดสอบ
โมฆะสาธารณะ testjNontobeanhavalist () {
string json = "{list: [{ชื่อ: 'test1'}, {ชื่อ: 'test2'}], แผนที่: {test1: {ชื่อ: 'test1'}, test2: {ชื่อ: 'test2'}}}" ;
// string json = "{list: [{name: 'test1'}, {name: 'test2'}]}";
MAP classmap = ใหม่ hashmap ();
classmap.put ("รายการ", person.class);
MyBeanWithPerson DiyBean = (MyBeanWithPerson) jsonObject.tobean (jsonobject.fromobject (JSON), myBeanWithPerson.class, classmap);
System.out.println (Diybean);
รายการรายการ = diyBean.getList ();
สำหรับ (Object O: list) {
ถ้า (o instanceof person) {
บุคคล p = (บุคคล) o;
System.out.println (P.GetName ());
-
-
-
// แยกวิเคราะห์ JSON เป็นวัตถุประเภทคอมโพสิตรวมถึงแผนที่
@ทดสอบ
โมฆะสาธารณะ TestjNontobeanHavamap () {
// คิดว่าแผนที่เป็นวัตถุ
string json = "{list: [{ชื่อ: 'test1'}, {ชื่อ: 'test2'}], แผนที่: {testone: {ชื่อ: 'test1'}, testtwo: {ชื่อ: 'test2'}}}" ;
MAP classmap = ใหม่ hashmap ();
classmap.put ("รายการ", person.class);
classmap.put ("แผนที่", map.class);
// ใช้คำใบ้, แยกวิเคราะห์ JSON โดยตรงลงในวัตถุที่กำหนดเองที่ระบุไว้ซึ่งรายการจะแยกวิเคราะห์อย่างสมบูรณ์แผนที่ไม่ได้แยกวิเคราะห์อย่างสมบูรณ์
MyBeanWithPerson DiyBean = (MyBeanWithPerson) jsonObject.tobean (jsonobject.fromobject (JSON), myBeanWithPerson.class, classmap);
System.out.println (Diybean);
System.out.println ("ทำรายการรีลีส");
รายการ <person> list = diyBean.getList ();
สำหรับ (บุคคล o: รายการ) {
บุคคล p = (บุคคล) o;
System.out.println (P.GetName ());
-
System.out.println ("ทำแผนที่รีลีส");
// ลงทะเบียนหม้อแปลงในรีจิสทรีก่อนและคุณต้องใช้คลาสในแพ็คเกจ Ezmorph
morpherregistry morpherregistry = jsonutils.getMorpherRegistry ();
Morpher Dynamorpher = New Beanmorpher (person.class, morpherregistry);
morpherregistry.registermorpher (Dynamorpher);
แผนที่แผนที่ = diybean.getMap ();
/*แผนที่ที่นี่ไม่มีคำแนะนำประเภทดังนั้นตามค่าเริ่มต้นวัตถุที่เก็บไว้คือประเภท net.sf.ezmorph.bean.morphdynabean*//
System.out.println (แผนที่);
/*เอาต์พุต:
{testone=net.sf.ezmorph.bean.morphdynabean@f73c1 [
{name = test1}
], testtwo=net.sf.ezmorph.bean.morphdynabean@186c6b2 [
{name = test2}
-
-
รายการ <person> output = new ArrayList ();
สำหรับ (iterator i = map.values (). iterator (); i.hasnext ();) {
// ใช้นายทะเบียนเพื่อทำการแปลงวัตถุบน dynabean ที่ระบุ
output.add ((บุคคล) morpherregistry.morph (person.class, i.next ()));
-
สำหรับ (บุคคล P: เอาท์พุท) {
System.out.println (P.GetName ());
/*เอาต์พุต:
ทดสอบ 1
Test2
-
-
-
-
5. ต่อไปนี้ให้ทรัพยากรที่จำเป็นสำหรับตัวอย่างข้างต้นรวมถึงแพ็คเกจ JAR และรหัส
/files/mailingfeng/json-lib/json-lib กรณีการใช้งานต้องใช้แพ็คเกจ JAR และคลาส Java.rar