前台和后台互相传递多维数组
上一篇文章介绍了前台和后台相互传递数组的方法,从客户端传一维数组到服务器可以用jquery的ajax方法直接传递。但如果传递的是多维数组呢?
此时可以借用json的stringify()方法将字符串数组转换为json数组对象传递到后台,后台再使用JSONArray对象的fromObject()方法将其转换为数组即可。
示例:
JS代码:
$(function(){ var array1 = new Array(); array1.push("A"); array1.push("B"); var array2 = new Array(); array2.push("123"); array2.push("456"); var allArray = new Array(); allArray.push(array1); allArray.push(array2); //将字符串数组转化为JSON数组 var jsonArry = JSON.stringify(allArray); $.ajax({ type: "POST", url: "JsonServelet", dataType: "json", traditional: true, data: { array: jsonArry }, success: function(data){ } }); });
Java代码:
package com.jason.json; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; public class JsonServelet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String array = req.getParameter("array"); Object[] object = getJsonToArray(array); Object data= object[0]; Object[] dataArray = null; ArrayList<String> dataList = new ArrayList<String>(); dataArray = getJsonToArray(data.toString());
for(int i=0;i<dataArray.length;i++){ dataList.add(dataArray[i].toString()); } for (int i = 0; i < dataList.size(); i++) { System.out.println("dataList = "+dataList.get(i)); } } /** * 从json数组中得到相应java数组 * JSONArray下的toArray()方法的使用 * @param data * @return */ public static Object[] getJsonToArray(String data) { JSONArray jsonArray = JSONArray.fromObject(data); return jsonArray.toArray(); } }