使用javascript中的变量将字符串转换为动态数组

时间:2013-03-14 23:25:56

标签: javascript jquery

我如何获取一个字符串(我使用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的长度将是动态的。

不确定从哪一个开始。我猜我将不得不做很多分裂和循环,但我愿意接受建议。

2 个答案:

答案 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).