1. JSON-LIB-это библиотека классов Java, которая обеспечивает функцию преобразования объектов Java, включая бобы, карты, коллекции, массивы Java и XML, в JSON или обратное преобразование.
2. JSON-LIB HOMEPAGE: http://json-lib.sourceforge.net/
3. Среда исполнения
Требуется следующая поддержка библиотеки
Commons-Lang 2.5
Commons-Beanutils 1.8.0
Коллекции Commons 3.2.1
Коммонс-логирование 1.1.1
Эзморф 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;
Import org.apache.commons.beanutils.propertyutils;
Импорт org.junit.test;
открытый класс jsonlibtest {
/*
* Нормальные типы, список, сбор и т. Д.
*
* Карта и пользовательские типы анализируются с использованием jsonObject
* Карта может быть понята как объект, а пары клавиш/значение внутри можно понять как атрибуты объекта/атрибута
* Это {key1: value1, key2, value2 ...}
*
* 1. JsonObject - это имя: Коллекция значений.
* Через его getJsonObject (ключ) вы можете получить JSonObject, -> преобразовать его в карту,
* Через его getjsonarray (ключ) вы можете получить jsonarray,
*
*
*/
// обычно конвертировать массивы в JSON
@Тест
public void testarraytojson () {
boolean [] boolarray = new Boolean [] {true, false, true};
Jsonarray jsonarray = jsonarray.fromobject (boolarray);
System.out.println (jsonarray);
// Печать [true, false, true]
}
// конвертировать объект коллекции в JSON
@Тест
public void testlisttojson () {
Список списка = new ArrayList ();
list.add ("First");
list.add ("второй");
Jsonarray jsonarray = jsonarray.fromobject (список);
System.out.println (jsonarray);
// Отпечатаны ["First", "Second"]
}
// конвертировать строку JSON в JSON, в зависимости от ситуации, используйте JSONArray или JsonObject
@Тест
public void testjsonstrothojson () {
Jsonarray jsonarray = jsonarray.fromobject ("['json', 'is', 'easy']");
System.out.println (jsonarray);
// Печать ["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", new String [] {"a", "b"});
map.put ("func", "function (i) {return this.arr [i];}");
JsonObject jsonObject = jsonObject.fromObject (map);
System.out.println (jsonObject);
}
// составной тип бона в 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;}, массив: [1,2]}";
JsonObject jsonObject = jsonObject.fromObject (json);
System.out.println (jsonObject);
Object Bean = jsonObject.tobean (jsonObject);
assertequals (jsonobject.get ("name"), propertyutils.getproperty (bean, "имя"));
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, "имя"));
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 = (list) jsonarray.tocollection (jsonobject.getjsonarray ("массив"));
для (объект объекта: ArrayList) {
System.out.println (Object);
}
}
// Перепровождение 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: list) {
if (o ancesser ferson) {
Человек p = (человек) o;
System.out.println (p.getName ());
}
}
}
// Перепровождение JSON в объект композитного типа, включая карту
@Тест
public void testjsontobeanhavamap () {
// думать о карте как объект
String json = "{list: [{name: 'test1'}, {name: 'test2'}], map: {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");
List <derss> list = diybean.getList ();
для (человек O: список) {
Человек p = (человек) o;
System.out.println (p.getName ());
}
System.out.println ("Do the Map Release");
// Сначала зарегистрируйте трансформатор в реестре, и вам нужно использовать класс в пакете 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}
]}
*/
Список <Derson> output = new ArrayList ();
for (iterator i = map.values (). iterator (); i.hasnext ();) {
// Использование регистратора для выполнения преобразования объекта на указанном динабском
output.add ((человек) morpherregistry.morph (person.class, i.next ()));
}
для (человек P: вывод) {
System.out.println (p.getName ());
/*Выход:
тест1
тест2
*/
}
}
}
5. Следующее предоставляет ресурсы, необходимые для приведенного выше примера, включая пакеты JAR и код
/Files/mailingfeng/json-lib/json-lib.