我如何获取一个字符串(我使用jQuery的text()从一个页面获取),例如:
var myData = "[{name:'xxx',data:[1,2,3,4,5]},{name:'yyy',data:[5,4,3,2,1]}]"; //this is a string :(
并将其转换为我需要的实际javascript对象,例如:
var myObject = [{name:'xxx',data:[1,2,3,4,5]},{name:'yyy',data:[5,4,3,2,1]}];
所以'name'和'data'将是非动态变量,但是名称值,数据数组和myObject的长度将是动态的。
不确定从哪一个开始。我猜我将不得不做很多分裂和循环,但我愿意接受建议。
答案 0 :(得分:2)
嗯,这很容易做到:
var myObject = eval(myData);
但是,您应该了解eval
功能的风险。由于它将值作为Javascript表达式运行,它还会运行字符串中的任何有害代码,因此只有在完全控制字符串中的内容时才应使用它。
如果您可以将格式更改为JSON,则可以安全地解析它而不会有代码注入的风险:
var myData = '[{"name":"xxx","data":[1,2,3,4,5]},{"name":"yyy","data":[5,4,3,2,1]}]';
var myObject = $.parseJSON(myData);
答案 1 :(得分:0)
你的意思是,
var myObject = eval('(' + myData + ')');
修改强>
它的主要含义是你可以将任何javascript代码(不仅仅是JSON)放到eval(Chrome的F12允许任何人利用它)。当你使用jQuery时,最好的选择是
var myObject = $.parseJSON(myData);
用于跨浏览器兼容性。
<强> $.parseJSON
强>
采用格式良好的JSON字符串并返回生成的JavaScript 宾语。传入格式错误的JSON字符串可能会导致异常 被抛出。例如,以下是所有格式错误的JSON 字符串:
{test: 1} (test does not have double quotes around it).
{'test': 1} ('test' is using single quotes instead of double quotes).