想必大家在開發(fā)過程中也遇到類似問題,如果直接將js獲取的數(shù)組傳給后臺(tái),后臺(tái)是無(wú)法區(qū)分?jǐn)?shù)組的,因?yàn)閖s數(shù)組如果是二維的就是這樣的:1,張三,23,2,李四,26
所以在此對(duì)其解決方法進(jìn)行整理。希望能給大家?guī)椭?/P>
首先需要在js里面對(duì)數(shù)組進(jìn)行轉(zhuǎn)換為json格式
js代碼如下:
/**
*js數(shù)組轉(zhuǎn)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后臺(tái)js該字符串后 對(duì)其進(jìn)行json轉(zhuǎn)換。
com.alibaba.fastjson.JSONArray mainArray=JSON.parseArray(info.getMainparame());
log.debug("數(shù)組大小:"+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代碼里面 不難看出,是經(jīng)過2次轉(zhuǎn)換。每次都是轉(zhuǎn)為JSONArray對(duì)象。如果是一維數(shù)組就只轉(zhuǎn)換一次。