1

我将如何获取一个字符串(我从使用 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'将是非动态变量,但是names值、数据数组和myObject的长度将是动态的。

不知道从哪里开始。我猜我将不得不做很多拆分和循环,但我愿意接受建议。

4

2 回答 2

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);
于 2013-03-14T23:31:06.187 回答
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).

于 2013-03-14T23:28:08.483 回答