zl程序教程

您现在的位置是:首页 >  后端

当前栏目

js数组转json并在后台对其解析具体实现

JS后台数组JSONJSON 实现 解析 具体
2023-06-13 09:15:12 时间

想必大家在开发过程中也遇到类似问题,如果直接将js获取的数组传给后台,后台是无法区分数组的,因为js数组如果是二维的就是这样的:1,张三,23,2,李四,26

所以在此对其解决方法进行整理。希望能给大家带去帮助

首先需要在js里面对数组进行转换为json格式

js代码如下:

复制代码代码如下:


/**
    *js数组转json
    *
    */
   functionarrayToJson(o){ 
   varr=[]; 
   if(typeofo=="string")return"/""+o.replace(/([/"/"//])/g,"//$1").replace(/(/n)/g,"//n").replace(/(/r)/g,"//r").replace(/(/t)/g,"//t")+"/""; 
   if(typeofo=="object"){ 
   if(!o.sort){ 
   for(variino) 
   r.push(i+":"+arrayToJson(o[i])); 
   if(!!document.all&&!/^/n?function/s*toString/(/)/s*/{/n?/s*/[nativecode/]/n?/s*/}/n?/s*$/.test(o.toString)){ 
   r.push("toString:"+o.toString.toString()); 
   } 
   r="{"+r.join()+"}"; 
   }else{ 
   for(vari=0;i<o.length;i++){ 
   r.push(arrayToJson(o[i])); 
   } 
   r="["+r.join()+"]"; 
   } 
   returnr; 
   } 
   returno.toString(); 
   }

然后是在java后台js该字符串后对其进行json转换。

复制代码代码如下:


com.alibaba.fastjson.JSONArraymainArray=JSON.parseArray(info.getMainparame());
    log.debug("数组大小:"+mainArray.size());
      for(inti=0;i<mainArray.size();i++){
          QybjProduceParamp=newQybjProduceParam();
          com.alibaba.fastjson.JSONArrayparamObject=(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对象。

如果是一维数组就只转换一次。