1. 程式人生 > >近期使用json總結的一些小技巧

近期使用json總結的一些小技巧

1.常用的json伺服器端解析工具包是:net.sf.json和org.json,我並沒有完整的去了解這2個包,每個包都有不同的特點。有時我們需要對前臺傳遞進來的字串資料在後臺進行解析並轉換成bean,這是,就不得不二者配合起來使用,因為net.sf.json是不能將json like的字串解析成json物件的,而org.json卻可以,但是後者卻又不能將json物件轉換成bean。所以二者配合可以解決這樣的需求。我寫的簡單轉換方法如下: 
Java程式碼  收藏程式碼
  1. /** 
  2.      * 將json like字串轉換成net.sf.json.JSONObject物件 
  3.      * @param target 
  4.      * @return 
  5.      * @throws JSONException 
  6.      */  
  7.     @SuppressWarnings("unchecked")  
  8.     public static JSONObject strToJson(String target) throws JSONException{  
  9.         JSONObject result = new JSONObject();  
  10.         if(!JSONUtils.mayBeJSON(target)){  
  11.             throw new IllegalArgumentException("String:"+target+",is not likely a json formated string.");  
  12.         }  
  13.         else{  
  14.             org.json.JSONObject json = new org.json.JSONObject(target);  
  15.             Iterator<String> iter = json.keys();  
  16.             while(iter.hasNext()){  
  17.                 String key = iter.next();  
  18.                 result.put(key, json.get(key));  
  19.             }  
  20.         }  
  21.         return result;  
  22.     }  

最理想的結果是,前臺傳遞到業務層的資料,就是可以直接持久化到資料庫的資料,這樣CRUD操作將會非常輕鬆。當然,這是一種比較笨的模擬Rails的ActiveRecord的方法了(導致檢視層參雜了過多的業務邏輯,非常不安全的說)。 
2.記住2個net.sf.json(這個包比org.json常用)類的例項的toString結果: 
JSONArray例項toString()之後為:[["aaa", 222, 333, ...], [...], [...], [...]] 
JSONObject例項toString()之後為:{"aaa": "111", "bbb": "222", ...} 
結果字串傳送到前臺之後只需要用eval方法去轉換一下就行了. 
當然實際使用中可以定義比較複雜的結構。