想必大家在開發過程中也遇到類似問題,如果直接將js獲取的數組傳給后臺,后臺是無法區分數組的,因為js數組如果是二維的就是這樣的:1,張三,23,2,李四,26
所以在此對其解決方法進行整理。希望能給大家帶去幫助
首先需要在js里面對數組進行轉換為json格式
js代碼如下:
/**
*js數組轉json
*
*/
function arrayToJson(o) {
var r = [];
if (typeof o == "string") return "/"" + o.replace(/([/'/"http://])/g, "http://$1").replace(/(/n)/g, "http://n").replace(/(/r)/g, "http://r").replace(/(/t)/g, "http://t") + "/"";
if (typeof o == "object") {
if (!o.sort) {
for (var i in o)
r.push(i + ":" + arrayToJson(o[i]));
if (!!document.all && !/^/n?function/s*toString/(/)/s*/{/n?/s*/[native code/]/n?/s*/}/n?/s*$/.test(o.toString)) {
r.push("toString:" + o.toString.toString());
}
r = "{" + r.join() + "}";
} else {
for (var i = 0; i < o.length; i++) {
r.push(arrayToJson(o[i]));
}
r = "[" + r.join() + "]";
}
return r;
}
return o.toString();
}
然后是在java后臺js該字符串后 對其進行json轉換。
com.alibaba.fastjson.JSONArray mainArray=JSON.parseArray(info.getMainparame());
log.debug("數組大小:"+mainArray.size());
for(int i=0;i< mainArray.size();i++){
QybjProduceParam p=new QybjProduceParam();
com.alibaba.fastjson.JSONArray paramObject=(com.alibaba.fastjson.JSONArray)mainArray.get(i);
p.setParamename(paramObject.get(1).toString());
p.setParamevalue(paramObject.get(2).toString());
params.add(p);
}
info.setParams(params);
大家從java代碼里面 不難看出,是經過2次轉換。每次都是轉為JSONArray對象。如果是一維數組就只轉換一次。