您的位置:首页 > 编程语言 > Java开发

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

2015-10-23 18:26 633 查看
在前端做图表展示时,往往会遇到后台传来的一大串数据,一般要转成数组形式,在前端展示,特别是百度的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(){
var
a="names";
var
b="ids";
$.post(path +
"/Test/test.do",{
a:a,
b:b
},function(data,status){
alert(data);
var
json = 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")
public
void test(String a,String
b,HttpServletResponse response) throws IOException {
Logi.logWarn("test",
a+b);
TestBean
testBean = new TestBean();
for(int
i = 0;i<20;i++)
testBean.ids.add("id"+i);
for(int
i = 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() {
return
names;
}
public
void setNames(ArrayList<String> names) {
this.names =
names;
}
public ArrayList<String> getIds() {
return
ids;
}
public
void setIds(ArrayList<String> ids) {
this.ids =
ids;
}
@Override
public String toString() {
return
"TestBean [names=" + names +
", ids=" + ids +
"]";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: