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.     }  
/**
	 * 将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方法去转换一下就行了.
当然实际使用中可以定义比较复杂的结构。

你可能感兴趣的:(json)