1。JSON-LIBは、豆、地図、コレクション、Javaアレイ、XMLなどのJavaオブジェクトをJSON、または逆転換など、Javaオブジェクトを変換する機能を提供するJavaクラスライブラリです。
2。JSON-LIBホームページ:http://json-lib.sourceforge.net/
3。実行環境
次のライブラリサポートが必要です
Commons-Lang 2.5
Commons-Beanutils 1.8.0
Commons-Collections 3.2.1
コモンズロギング1.1.1
Ezmorph 1.0.6
4。機能的な例
Junitケースの例で与えられたコード例を次に示します
コードコピーは次のとおりです。
パッケージcom.mai.json;
static org.junit.assert.assertequalsをインポートします。
java.util.arraylistをインポートします。
Import 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をインポートします。
Import org.junit.test;
パブリッククラスjsonlibtest {
/*
*通常のタイプ、リスト、コレクションなどはすべてjsonarrayを使用して解析されます
*
*マップとカスタムタイプは、jsonObjectを使用して解析されます
*マップはオブジェクトとして理解でき、内部のキー/値のペアはオブジェクトの属性/属性値として理解できます
*それは{key1:value1、key2、value2 ...}です
*
*1。JsonObjectは名前です:key(key)メソッドを通じてキーの後に対応する値の部分(文字列)。
* getjsonobject(key)を通じて、jsonobjectを取得できます - >それをマップに変換する、
* getjsonarray(key)を通じて、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( "second");
jsonarray jsonarray = jsonarray.fromobject(list);
System.out.println(jsonarray);
//印刷["first"、 "second"]
}
// String JSONをJSONに変換します。状況に応じて、JSonArrayまたはJSonObjectを使用します
@テスト
public void testjsonstrojson(){
jsonarray jsonarray = jsonarray.fromobject( "['json'、 'is'、 'easy']");
System.out.println(jsonarray);
//印刷["json"、 "is"、 "easy"]]
}
// JsonObjectを使用して、マップをJSONに変換します
@テスト
public void testmaptojson(){
マップマップ= new Hashmap();
map.put( "name"、 "json");
map.put( "bool"、boolean.true);
map.put( "int"、new Integer(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(new date());
cardnum = new arrayList();
cardnum.add( "農業銀行");
cardnum.add( "icbc");
cardnum.add( "ccb");
cardnum.add(new Person( "Test"));
bean.setcardnum(cardnum);
jsonobject jsonobject = jsonobject.fromobject(bean);
system.out.println(jsonobject);
}
//通常のタイプのJSONをオブジェクトに変換します
@テスト
public void testjsontoo object()スロー例外{
string json = "{name =/" json/"、bool:true、int:1、double:2.2、function(a){return a;}、array:[1,2]}";
jsonobject jsonobject = jsonobject.fromobject(json);
system.out.println(jsonobject);
object bean = 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"));
list arrayList =(list)jsonarray.tocollection(jsonobject.getjsonarray( "array"));
for(オブジェクトオブジェクト: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();
for(オブジェクトO:リスト){
if(o instanceof person){
人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( "List Release"を実行 ");
list <serpures> list = diybean.getList();
for(人o:list){
人p =(人)o;
System.out.println(p.getName());
}
system.out.println( "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}
]}
*/
list <serson> output = new ArrayList();
for(iterator i = map.values()。iterator(); i.hasnext();){
//レジストラを使用して、指定された王朝でオブジェクト変換を実行します
output.add((person)morpherregistry.morph(person.class、i.next()));
}
for(人P:出力){
System.out.println(p.getName());
/*出力:
テスト1
テスト2
*/
}
}
}
5.以下は、JARパッケージやコードを含む上記の例に必要なリソースを提供します
/files/mailingfeng/json-lib/json-libユースケースには、JARパッケージとJava classes.rarが必要です