1. JSON-LIB هي مكتبة فئة Java توفر وظيفة تحويل كائنات Java ، بما في ذلك الفاصوليا والخرائط والمجموعات ومصفوفات Java و XML ، إلى JSON ، أو تحويل عكسي.
2.
3. بيئة التنفيذ
مطلوب دعم المكتبة التالي
العموم-لانج 2.5
Commons-Bunutils 1.8.0
Commons-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 هو اسم: مجموعة القيمة المقابلة (سلسلة) بعد الحصول على المفتاح من خلال طريقة GET (المفتاح).
* من خلال getjsonoBject (مفتاح) ، يمكنك الحصول على jsonobject ، -> تحويله إلى خريطة ،
* من خلال getjsonarray (مفتاح) يمكنك الحصول على jsonarray ،
*
*
*/
// عمومًا تحويل المصفوفات إلى JSON
@امتحان
public void testarraytojson () {
Boolean [] BoolArray = new Boolean [] {true ، false ، true} ؛
jsonarray jsonarray = jsonarray.fromObject (boolarray) ؛
system.out.println (jsonarray) ؛
// المطبوعات [صحيح ، خطأ ، صحيح]
}
// تحويل كائن المجموعة إلى JSON
@امتحان
public void testlisttojson () {
قائمة قائمة = ArrayList () جديد ؛
list.add ("First") ؛
list.add ("Second") ؛
jsonarray jsonarray = jsonarray.fromObject (list) ؛
system.out.println (jsonarray) ؛
// المطبوعات ["الأولى" ، "الثانية"]
}
// تحويل سلسلة JSON إلى JSON ، اعتمادًا على الموقف ، استخدم JSONARRAY أو JSONOBJECT
@امتحان
public void testjsonstrtojson () {
jsonarray jsonarray = jsonarray.fromobject ("['' Json '،' '،' Easy ']") ؛
system.out.println (jsonarray) ؛
// prints ["json" ، "IS" ، "Easy"]
}
// تحويل الخريطة إلى JSON ، باستخدام JSONOBJECT
@امتحان
public void testmaptojson () {
خريطة الخريطة = new hashmap () ؛
map.put ("name" ، "json") ؛
map.put ("bool" ، boolean.true) ؛
map.put ("int" ، عدد صحيح جديد (1)) ؛
map.put ("arr" ، سلسلة جديدة [] {"a" ، "b"}) ؛
map.put ("func" ، "function (i) {return this.arr [i] ؛}") ؛
jsonobject jsonobject = jsonobject.fromObject (map) ؛
system.out.println (jsonobject) ؛
}
// compound type bean in json
@امتحان
public void testbeadtojson () {
mybean bean = new mybean () ؛
bean.setid ("001") ؛
Bean.setName ("بطاقة مصرفية") ؛
Bean.setDate (تاريخ جديد ()) ؛
قائمة cardnum = new ArrayList () ؛
Cardnum.add ("البنك الزراعي") ؛
Cardnum.add ("ICBC") ؛
Cardnum.add ("CCB") ؛
Cardnum.add (شخص جديد ("اختبار")) ؛
Bean.setCardNum (cardnum) ؛
jsonobject jsonobject = jsonobject.fromObject (Bean) ؛
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) ؛
كائن بين = jsonobject.tobean (jsonobject) ؛
Assertequals (jsonobject.get ("name") ، propertyUtils.getProperty (bean ، "name")) ؛
Assertequals (jsonobject.get ("bool") ، propertyUtils.getProperty (Bean ، "Bool")) ؛
assertequals (jsonobject.get ("int") ، propertyUtils.getProperty (Bean ، "int")) ؛
Assertequals (jsonobject.get ("double") ، propertyUtils.getProperty (Bean ، "double")) ؛
Assertequals (jsonobject.get ("func") ، propertyUtils.getProperty (Bean ، "Func")) ؛
System.out.println (propertyUtils.getProperty (Bean ، "Name")) ؛
System.out.println (propertyUtils.getProperty (Bean ، "Bool")) ؛
System.out.println (propertyUtils.getProperty (Bean ، "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 ("Array")) ؛
لـ (كائن كائن: ArrayList) {
system.out.println (كائن) ؛
}
}
// parse json في كائن نوع مركب ، بما في ذلك القائمة
@امتحان
public void testjsontoBeanhavalist () {
String json = "{list: [{name: 'test1'} ، {name: 'test2'}] ، map: {test1: {name: 'test1'} ، test2: {name: 'test2'}}" ؛
// string json = "{list: [{name: 'test1'} ، {name: 'test2'}]}" ؛
map classMap = new hashmap () ؛
classmap.put ("list" ، person.class) ؛
MyBeanwithPerson DIYBean = (MyBeanWithPerson) JSonObject.tobean (jsonobject.fromobject (json) ، mybeanwithperson.class ، classmap) ؛
System.out.println (Diybean) ؛
قائمة قائمة = diybean.getList () ؛
لـ (كائن O: قائمة) {
إذا (o مثيل من الشخص) {
الشخص p = (شخص) o ؛
System.out.println (p.getName ()) ؛
}
}
}
// تحليل JSON في كائن نوع مركب ، بما في ذلك الخريطة
@امتحان
public void testjsontoBeanhavamap () {
// فكر في الخريطة ككائن
String json = "{list: [{name: 'test1'} ، {name: 'test2'}] ، الخريطة: {testone: {name: 'test1'} ، testTwo: {name: 'test2'}}}" ؛
map classMap = new hashmap () ؛
classmap.put ("list" ، person.class) ؛
classMap.put ("Map" ، map.class) ؛
// استخدم تلميحًا ، تحليل JSON مباشرة في كائن مخصص محدد ، حيث يتم تحليل القائمة بالكامل ، لا يتم تحليل الخريطة بالكامل
MyBeanwithPerson DIYBean = (MyBeanWithPerson) JSonObject.tobean (jsonobject.fromobject (json) ، mybeanwithperson.class ، classmap) ؛
System.out.println (Diybean) ؛
System.out.println ("Do the List Release") ؛
قائمة <Person> list = diybean.getList () ؛
لـ (الشخص o: قائمة) {
الشخص p = (شخص) o ؛
System.out.println (p.getName ()) ؛
}
System.out.println ("do the map relect") ؛
// سجل المحول في السجل أولاً ، وتحتاج إلى استخدام الفصل في حزمة 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 (MAP) ؛
/*الإخراج:
{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 ((person) morpherregistry.morph (person.class ، i.next ())) ؛
}
لـ (الشخص P: الإخراج) {
System.out.println (p.getName ()) ؛
/*الإخراج:
Test1
Test2
*/
}
}
}
5. يوفر ما يلي الموارد المطلوبة للمثال أعلاه ، بما في ذلك حزم الجرة والرمز
/ملفات/mailingfeng/json-lib/json-lib تتطلب حزم جرة وفئات java.rar