用ajax傳遞json對象數組的方法

通常須要用到如下jar包:html

commons-beanutils.jarjava

commons-collections-3.2.1.jarajax

commons-lang-2.6.jar數據庫

commons-logging-1.1.1.jarjson

ezmorph-1.0.6.jar數組

json-lib-2.4-jdk15.jarjsp

能夠在這裏下載。不過百度一下找下資源也很是方便的呵呵。函數

http://download.csdn.net/detail/tyfengyu/4478154spa


servlet端從數據庫取出來數據對象Entity,放到List<Entity> list裏面。(個人Entity裏面有name, country屬性)而後用net.sf.json.JSONArray處理一下:.net

ArrayList<Entity> list = (ArrayList<Entity>) Service.getEntity();
JSONArray jsonArray = JSONArray.fromObject(list);
response.getWriter().write(jsonArray.toString());

jsp端在success中解析json對象比較簡單:

success: function(data){
	var edata = eval(data);
	
	for(var i in edata)
	    alert(edata[i].name);
	    
	}

直接解析成對象數組的形式。


那從jsp端傳遞json對象數組去servlet呢?

我這裏傳了三個對象數組updataData, newData, deleteData,分別都是[{'name',num},{'country',str}] 的形式。應該先用JSON.stringify處理一下變成字符串,以便傳遞,ajax函數的data應該這麼寫:

data: {'updateData': JSON.stringify(updateData), 
    'newData': JSON.stringify(newData), 
    'deleteData': JSON.stringify(deleteData)},


Servlet端接收,其實就是把對象數組用JSONArray接收,而後對這個Array中的每一個JSONObject做遍歷,將其放到List裏面。例舉接收updataData的方式,其餘兩個對象數組也用一樣的方式能夠處理:

String updateData = request.getParameter("updateData");
List<Entity> updataDataList = new ArrayList<Entity>();
JSONArray jsa1 = JSONArray.fromObject(updateData);
    for(Object obj : jsa1){
    	JSONObject jso = JSONObject.fromObject(obj);
    	Entity entity = new Entity();
    	entity .setName(jso.get("name").toString());
    	entity .setCountry(jso.get("country").toString());
    	updataDataList.add(entity );
    }


經驗,mark一下。

相關文章
相關標籤/搜索