We must have encountered similar problems during the development process. If we directly pass the array obtained by js to the backend, the backend cannot differentiate the array, because if the js array is two-dimensional, it is like this: 1, zhang San, Li Si, 26
So here we will sort out the solution. Hope to help you
First, convert the array to json format in js.
The js Code is as follows:
[Javascript]
/**
* Convert js array to 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 * \ [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 ();
}
Then, the string is converted to json in java background js.
[Java]
Com. alibaba. fastjson. JSONArray mainArray = JSON. parseArray (info. getMainparame ());
Log. debug ("array size:" + 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 );
It is not hard to see from the java code that it is converted twice. Every time it is converted into a JSONArray object.
If it is a one-dimensional array, it is converted only once.