日期:2014-05-16 浏览次数:20340 次
json的确是一个非常方便的轻便的数据交换格式,最近项目中使用,使我深有体会。现在把工作中总结和学到的几个点归纳到一起。
1.常用的json服务器端解析工具包是:net.sf.json和org.json,我并没有完整的去了解这2个包,每个包都有不同的特点。有
时我们需要对前台传递进来的字符串数据在后台进行解析并转换成bean,这是,就不得不二者配合起来使用,因为net.sf.json是不能将json
like的字符串解析成json对象的,而org.json却可以,但是后者却又不能将json对象转换成bean。所以二者配合可以解决这样的需求。我
写的简单转换方法如下:
/** * 将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方法去转换一下就行了.
当然实际使用中可以定义比较复杂的结构。