개발 과정에서 모든 사람이 비슷한 문제에 직면했다고 생각합니다. js에서 얻은 배열이 백엔드에 직접 전달되면 백엔드는 배열을 구별할 수 없습니다. js 배열이 2차원이면 다음과 같기 때문입니다. : 1, Zhang San, 23,2,John Doe,26
해결책은 다음과 같습니다. 모두에게 도움이 되기를 바랍니다
먼저 js에서 배열을 json 형식으로 변환해야 합니다
js 코드는 다음과 같습니다.
/**
*js 배열을 json으로
*
*/
function arrayToJson(o) {
var r = [];
if (typeof o == "string") return "/"" o.replace(/([/'/"//]) /g, "//$1").replace(/(/n)/g, "//n").replace(/(/r)/g, "//r").replace(/(/t )/g , "//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*/[네이티브 코드/]/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();
매개변수. add(p);
}
info.setParams(params );
두 번 변환된 것을 Java 코드에서 확인하는 것은 어렵지 않습니다. JSONArray 객체로 변환될 때마다.
1차원 배열인 경우 한 번만 변환됩니다.