json-libに基づくJArパッケージJsonプログラム、本編では主に簡単な例を紹介します!


1.まずJson-libは、jakarta commons-lang 2.4 jakarta commons-beanutils 1.7.0 jakarta commons-collections 3.2 jakarta commons-logging 1.1.1 ezmorph 1.0.6をサポートするjarパッケージを少なくともいくつか必要とする
2.Javaコレクションタイプarrays,collectionsとJSOnArrayの変換例1:boolean[]boolArray=new boolean[]{true,false,true};   JSONArray jsonArray = JSONArray.fromObject(boolArray);   System.out.println(jsonArray);出力:[true,false,true]例2:List list=new ArrayList()      list.add( "first");      list.add( "second");      JSONArray jsonArray = JSONArray.fromObject( list );      System.out.println( jsonArray ); 出力:["first","second"]例3:JSOnArray jsonArray=JSOnArray.fromObject( "['json','is','easy']");      System.out.println( jsonArray ); 出力:[[json]、[is]、[easy]]
3.JavaオブジェクトタイプJavaBean,MapsとJSOnObjectの変換例1:Mapmap=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 ); 出力:{"func":function(i){return this.arr[i];}「arr」:[a],[b],[int]:1,[bool]:true,[name]:[json]例2:class MyBean{private String name=「json」;private int pojoId=1;private char[options=new char[]{'a','f'}       private String func1 = "function(i){ return this.options[i]; }";       private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");         //getters & setters       ...   } JSONObject jsonObject = JSONObject.fromObject( new MyBean() );   System.out.println( jsonObject );出力:{"func 1":function(i){return this.options[i];}"func2":function(i){ return this.options[i]; },"name":"json","options":["a","f"],"pojoId":1}4. JSONデータオブジェクトフォーマット変換JAVAタイプのBeans例1(動的beanに変換):String json="{name="json",bool:true,int:1,double:2.2,func:function(a){return a;}array:[1,2]}";   JSONObject jsonObject = JSONObject.fromObject(json);   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"));出力:junitテストは緑のバー、すなわち値が等しいことを示します.
例2(特定のbeanに変換):String json="{bool:true,integer:1,string:"json"}";   JSONObject jsonObject = JSONObject.fromObject(json);   BeanA bean = (BeanA) JSONObject.toBean(jsonObject, BeanA.class);   assertEquals(jsonObject.get("bool"), Boolean.valueOf(bean.isBool()));   assertEquals(jsonObject.get("integer"), new Integer(bean.getInteger()));   assertEquals(jsonObject.get("string"), bean.getString());注意:BeanAは、特定の関連属性のgetters&settersメソッドのjavaBean 5です.Java-Json相互変換フィルタ--javaタイプをjsonに変換するときのプロパティのフィルタリングを行います.次に、3のインスタンス1で説明します.インスタンス1:Mapmap=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]; }");
   JsonConfig jsonConfig = new JsonConfig();   jsonConfig.setJsonPropertyFilter(new PropertyFilter() {    public boolean apply(Object source, String name, Object value) {     if (value != null && Number.class.isAssignableFrom(value.getClass())) {      return true;     }     return false;    }   });   JSONObject json = JSONObject.fromObject(map, jsonConfig);   System.out.println(json);出力:{"func":function(i){return this.arr[i];}「arr」:["a","b","bool":true,"name","json"}および上の出力:{"func":function(i){return this.arr[i];}「arr」:[「a」,「b」],「int」:1,「bool」:true,「name」:「json」}少なくなった:「int」:1,これが属性フィルタとして機能し,コードを見るとNumber型の値をフィルタリングしたことがわかる.
例2:前例のNumberをclass.isAssignableFrom(value.getClass()のNumberをStringに変更しますか?   Map map = 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]; }");
   JsonConfig jsonConfig = new JsonConfig();   jsonConfig.setJsonPropertyFilter(new PropertyFilter(){public boolean apply(Object source,String name,Object value){if(value!=null&&String.class.isAssignableFrom(value.getClass())}//ここはフィルタのキーreturn trueです.     }     return false;    }   });   JSONObject json = JSONObject.fromObject(map, jsonConfig);   System.out.println(json);出力:{"arr":["a","b"],"int":1,"bool":true}//ValueのタイプがStringのものをすべてフィルタリングしました.
6.Json-Java相互変換フィルタ--5とは逆に今回--json-をjavaに変換する際の属性のフィルタリングを4の例1で実証します:例1:String json="{name="json",bool:true,int:1,double:2.2,func:function(a){return a;}array:[1,2]}";   JSONObject jsonObject = JSONObject.fromObject(json);
   JsonConfig jsonConfig = new JsonConfig();   jsonConfig.setRootClass(Map.class);   jsonConfig.setJavaPropertyFilter(new PropertyFilter){public boolean apply(Object source,String name,Object value){if("bool".equals(name)|"double".equals(name){//ここでフィルタリングのキーreturn true;     }     return false;    }   });   Object bean = JSONObject.toBean(jsonObject, jsonConfig);   System.out.println(bean);出力:{func=function(a){return a;}int=1,name=json,array=[1,2]}同4のインスタンス1出力:{double=2.2,func=function(a){return a;}int=1,name=json,bool=true,array=[1,2]}が少なくなった:double=2.2,bool=true,nameがboolとdoubleの項目であるためフィルタリングされた.
例2:String json="{name=""json",bool:true,int:1,double:2.2,func:function(a){return a;},array:[1,2]}";   JSONObject jsonObject = JSONObject.fromObject(json);   JsonConfig jsonConfig = new JsonConfig();   jsonConfig.setRootClass(Map.class);   jsonConfig.setJavaPropertyFilter(new PropertyFilter() {    public boolean apply(Object source, String name, Object value) {     if (value != null && String.class.isAssignableFrom(value.getClass(){//ここはフィルタリングのキーreturn trueです.     }     return false;    }   });   Object bean = JSONObject.toBean(jsonObject, jsonConfig);   System.out.println(bean);出力:{double=2.2,func=function(a){return a;}int=1, bool=true, array=[1, 2]}
このことから、javaがjsonに変換されてもjsonがjavaに変換されても、フィルタはnameとvalueに基づいてフィルタすることができる.
 
 
 
 
 
コレクションがjson文字列に変換され、json文字列がコレクションオブジェクトに変換された例
 Vector<UserOnLineBean> userVector = new Vector<UserOnLineBean>();
		 
		 for(int i=0;i<100;i++){
			 UserOnLineBean bean=new UserOnLineBean();
			 bean.setUsername("zhangsan"+i);
			 userVector.add(bean);
		 }
		JSONArray jsonArray = JSONArray.fromObject( userVector ); 
		System.out.println(jsonArray.toString());
		
		JSONArray jsonArray2 = (JSONArray) JSONSerializer.toJSON(jsonArray.toString());
		List list = (List) JSONSerializer.toJava(jsonArray);
		for (Object obj : list) {
			JSONObject jsonObject = JSONObject.fromObject(obj);
			UserOnLineBean bean = (UserOnLineBean) JSONObject.toBean(jsonObject,
					UserOnLineBean.class);
			System.out.println(bean.getUsername());
		}