js eval方法解析java后台传来的json字符串

来源:互联网 发布:中拓互联 中文域名 编辑:程序博客网 时间:2024/05/01 17:40

在前端做图表展示时,往往会遇到后台传来的一大串数据,一般要转成数组形式,在前端展示,特别是百度的Echarts!这里使用eval解决此问题。

对于服务器返回的JSON字符串,如果POST请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次。这种方式也适合以普通javascipt方式获取json对象,以下举例说明:

var dataObj=eval("("+data+")");//转换为json对象</span> 

在 eval这里要添加 “("("+data+")");的原因是 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

不废话了,写个具体demo如下

代码主要由实体类TestBean、SpringMvc控制类Test、前端jsp文件index.jsp

前端jsp

function test(){

vara="names";

varb="ids";

$.post(path +"/Test/test.do",{

a:a,

b:b

},function(data,status){

alert(data);

varjson = eval("("+data+")");

alert(json.ids);

alert(json.names);

/* $.each(json,function(i,n){

alert(json[i].name+" "+json[i].value);

alert(n.name+" "+n.value);

}); */

});

}

控制类

@Controller

@RequestMapping("/Test")

public class Test {

@RequestMapping("/test.do")

publicvoid test(String a,String b,HttpServletResponse response) throws IOException {

Logi.logWarn("test",a+b);

TestBean testBean = new TestBean();

for(inti = 0;i<20;i++)

testBean.ids.add("id"+i);

for(inti = 0;i<20;i++)

testBean.names.add("name"+i);

JSONObject jsonObject = JSONObject.fromObject(testBean);

Logi.logWarn("test",jsonObject.toString());

response.getWriter().write(jsonObject.toString());

return ;

}

}


实体类

public class TestBean {

public ArrayList<String>names = new ArrayList<String>();

public ArrayList<String>ids = new ArrayList<String>();

public ArrayList<String> getNames() {

returnnames;

}

publicvoid setNames(ArrayList<String> names) {

this.names =names;

}

public ArrayList<String> getIds() {

returnids;

}

publicvoid setIds(ArrayList<String> ids) {

this.ids =ids;

}

@Override

public String toString() {

return"TestBean [names=" + names +", ids=" + ids +"]";

}

}



0 0
原创粉丝点击