近期使用json總結的一些小技巧
阿新 • • 發佈:2019-02-12
1.常用的json伺服器端解析工具包是:net.sf.json和org.json,我並沒有完整的去了解這2個包,每個包都有不同的特點。有時我們需要對前臺傳遞進來的字串資料在後臺進行解析並轉換成bean,這是,就不得不二者配合起來使用,因為net.sf.json是不能將json like的字串解析成json物件的,而org.json卻可以,但是後者卻又不能將json物件轉換成bean。所以二者配合可以解決這樣的需求。我寫的簡單轉換方法如下:
Java程式碼
最理想的結果是,前臺傳遞到業務層的資料,就是可以直接持久化到資料庫的資料,這樣CRUD操作將會非常輕鬆。當然,這是一種比較笨的模擬Rails的ActiveRecord的方法了(導致檢視層參雜了過多的業務邏輯,非常不安全的說)。
2.記住2個net.sf.json(這個包比org.json常用)類的例項的toString結果:
JSONArray例項toString()之後為:[["aaa", 222, 333, ...], [...], [...], [...]]
JSONObject例項toString()之後為:{"aaa": "111", "bbb": "222", ...}
結果字串傳送到前臺之後只需要用eval方法去轉換一下就行了.
當然實際使用中可以定義比較複雜的結構。
Java程式碼
- /**
- * 將json like字串轉換成net.sf.json.JSONObject物件
- * @param target
- * @return
- * @throws JSONException
- */
- @SuppressWarnings("unchecked")
- public static JSONObject strToJson(String target) throws JSONException{
-
JSONObject result = new JSONObject();
- if(!JSONUtils.mayBeJSON(target)){
- throw new IllegalArgumentException("String:"+target+",is not likely a json formated string.");
- }
- else{
- org.json.JSONObject json = new org.json.JSONObject(target);
-
Iterator<String> iter = json.keys();
- while(iter.hasNext()){
- String key = iter.next();
- result.put(key, json.get(key));
- }
- }
- return result;
- }
最理想的結果是,前臺傳遞到業務層的資料,就是可以直接持久化到資料庫的資料,這樣CRUD操作將會非常輕鬆。當然,這是一種比較笨的模擬Rails的ActiveRecord的方法了(導致檢視層參雜了過多的業務邏輯,非常不安全的說)。
2.記住2個net.sf.json(這個包比org.json常用)類的例項的toString結果:
JSONArray例項toString()之後為:[["aaa", 222, 333, ...], [...], [...], [...]]
JSONObject例項toString()之後為:{"aaa": "111", "bbb": "222", ...}
結果字串傳送到前臺之後只需要用eval方法去轉換一下就行了.
當然實際使用中可以定義比較複雜的結構。