转换javascript数组与javascript函数内部json和返回
Convert javascript array with JavaScript functions inside to json and back
我有一个JavaScript数组/对象包含函数例如
var map = [function(){ alert('test') }, function(){ alert('test2') }];
我如何将这个数组转换为JSON和返回到可用的JavaScript代码?
我应该使用eval还是预先创建这些函数,然后使用window["functionname"]
加载它们
你可以这样做。
要转换为JSON,可以这样做:
//your original map
var map = [function(){ alert('test') }, function(){ alert('test2') }];
//convert it to a string
var str = map.toString();
//add the string to a javascript object
var obj = {funcArrStr: str};
//convert that object to json
var json = JSON.stringify(obj);
对于解析,您可以这样做:
var json = /* get json from server side */;
//parse the json
var parsed = JSON.parse(json);
//pull out the string from the parsed object
var funcArrStr = parsed.funcArrStr;
//wrap it in brackets [] and eval it to convert back to array
var evaled = eval('[' + parsed.funcArrStr + ']');
运行下面的代码片段,并检查浏览器的javascript控制台以获得演示。
var map = [function(){ alert('test') }, function(){ alert('test2') }];
console.log('map:');
console.log(map);
var str = map.toString();
console.log('convert map to string:');
console.log(str);
var obj = {funcArrStr: str};
console.log('put it in an object:');
console.log(obj);
var json = JSON.stringify(obj);
console.log('convert to json string:');
console.log(json);
var parsed = JSON.parse(json);
console.log('parse json string:');
console.log(parsed);
var funcArrStr = parsed.funcArrStr;
console.log('pull out string from object');
console.log(funcArrStr);
var evaled = eval('[' + parsed.funcArrStr + ']');
console.log('wrap in [] and eval:');
console.log(evaled);
编辑回应评论
如果我有一个包含几百个函数的数组,eval会如何影响我的javascript速度?测试一下。在我的浏览器中,分配字符串,调用eval来创建函数数组,并在下面的代码片段中对超过300个函数调用eval通常需要大约2毫秒。如果你有更大的函数,它很可能会花费更长的时间,但测试它并计时,看看加载时间是否合理。
var start = new Date().getMilliseconds();
var funcStr = "function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }," +
"function() { alert(test); }";
var functions = eval('[' + funcStr + ']');
for (var i = 0; i < functions.length; i++) {
eval(functions[i]);
}
var end = new Date().getMilliseconds();
alert('Evals complete in ' + (end-start) + ' milliseconds');
相关文章:
- Javascript JSON.parse not working
- Javascript:JSON请求仅在第一次工作
- 定义this.properties或objectName.properties的javascript JSON对象
- Javascript/JSON警报返回Undefined
- 使用XPath样式访问Javascript JSON对象属性
- JavaScript JSON关联对象键和值都作为日期时间戳
- Javascript-JSON-嵌套和分组
- Javascript json返回未定义
- 无标题Javascript JSON数组->CSV导出
- Javascript JSON对象替换对象中的字符串
- Javascript/Json日期转换问题
- 使用jstl c:forEach在迭代jsp bean上创建javascript json对象
- 为什么我的JavaScript / JSON脚本不能在Internet Explorer中工作
- 将数据从 Python 发送到 Javascript (JSON)
- JavaScript Json 值追加基于相等条件
- 在设置用户后,从 JavaScript JSON 请求中获取 Web 服务 (asmx) ASP.NET Windows
- JavaScript - JSON 数据结构的构建 - 如何使用变量值更改键名
- Javascript JSON 解析和字符串化用于多级
- 如何将数据 php 更改为 javascript json
- Javascript JSON 到 Excel 文件下载