控件json格式组装接收

//////////////list<String[]> 转化为String[]
或者试一下直接用objectoutputsream
static String[] convert(List<String[]> from) {
  ArrayList<String> list = new ArrayList<String>(); 
  for (Object[] strings : from) {
  String[] a = new String[strings.length];
  for(int i=0;i<strings.length;i++){
  a[i]=strings[i].toString();
 
  }
  Collections.addAll(list, a);
  } 
  return list.toArray(new String[list.size()]); 
  }



/////////

[["2011",6],["2012",294],["2013",239],["2014",164]]

static String[] convert(List<String[]> from) {
  ArrayList<String> list = new ArrayList<String>(); 
  for (Object[] strings : from) {
  String[] a = new String[strings.length];
//   for(int i=0;i<strings.length;i++){
//   a[i]=strings[i].toString();
//  
//   }
String b=  JSONArray.fromObject(strings).toString();
  Collections.addAll(list, b);
  } 
  return list.toArray(new String[list.size()]); 
  }


///前台这样打过去

success:function(data){
            var datas=eval(data);
            for(var k=0;k<datas.length;k++){
               alert(datas[k][0]);
            alert(xdatas[k][1]);

           

            }


                    }


//////图表数据的渲染highcharts

////组装json的方法,结合前面的java代码有一步转化为string的方法


var textvar=null;
  var time=[];
  var datad=[];
            $.ajax({
            type:'post',
            url:urlhichar,
            async:false,
            data:null,
            dataType:'json',
            success:function(data){
            var datas=eval(data);
            for(var k=0;k<datas.length;k++){
               alert(datas[k][0]);
               alert(datas[k][1]);
               time[k]=datas[k][0];
               alert(time);
                              ////组装成list数组
               datad.push("{y:"+parseInt(datas[k][1])+","+"color:colors["+k+"]"+"}");

              
            }


                    },
            error:function(){


                   
                }
            });
/////////变成大的数组
            textvar = JSON.stringify(datad);
          
       //  alert(textvar);

var colors = Highcharts.getOptions().colors,
        categories = time,
        name = 'Browser brands',
         a =eval(textvar),
         b="["+a+"]",
/////////变成ocjecb
        data =eval(b);

//////只要前台控件接受的是json格式的东西[{}....],他就可以直接用json字符串,或者eval之后的object,这主要是解决动态的json外层会有一对“”。为了去了这个
"{'310106':{'opacity':'10','bgcolor':'0xFF0000','tooltip':{'div':[{'ico':'ico','txt':'30/800'},{'ico':'ico1','txt':'30/600'}],'type':'0','url':'http://www.baidu.com'}},'310107':{'opacity':'5','bgcolor':'0x00FF00','tooltip':{'div':[{'ico':'ico2','txt':'30/800'},{'ico':'ico3','txt':'30/600'}],'type':'0','url':'http://www.sohu.com'}}}"

这种整个用eval就不会有双引号


看下接受这种数据的怎么处理

{}这种就不是json,注意单频号
这用数组从解析成功返回的json数组取出,就不会有双引号了


function flex(){
$.ajax({
url:'${ctx}/flex!flex.json',
type:'POST',
data:'',
dataType : 'json',
async:false,
success:function(data){
object1=data;////json对象数组
//alert(object1);
}
});
}
function initGIS1(){
var gis = document.getElementById("GIS");
//alert(1);
var textvar;
if(gis){
//var s = object1.substring(1, object1.length-1);
// alert(2);
textvar = JSON.stringify(object1);
var s = textvar.substring(1, textvar.length-1);
//alert(textvar);
//alert(object1);
var rs=s.replace(/\"/g,"'");
//var b=eval(rs);
//var bb="["+rs+"]"
//var j =eval(bb);
            var jj=object1[0];                 ///这用数组取出
            alert(jj);
// alert(rs.replace(/\"/g,""));
gis.init_1(jj);
}

}

猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2123567