在javascript中将字符串转换为带有变量的动态数组

在javascript中将字符串转换为带有变量的动态数组,javascript,jquery,Javascript,Jquery,如何获取字符串(使用jQuery的text()从页面中获取),例如: 并将其转换为我需要的实际javascript对象,例如: var myObject = [{name:'xxx',data:[1,2,3,4,5]},{name:'yyy',data:[5,4,3,2,1]}]; 因此,“name”和“data”将是非动态变量,而name值、数据数组和myObject的长度将是动态的 我不确定从哪里开始。我猜我将不得不进行大量的拆分和循环,但我愿意接受建议。你的意思是 var myObjec

如何获取字符串(使用jQuery的text()从页面中获取),例如:

并将其转换为我需要的实际javascript对象,例如:

var myObject = [{name:'xxx',data:[1,2,3,4,5]},{name:'yyy',data:[5,4,3,2,1]}];
因此,“name”和“data”将是非动态变量,而name值、数据数组和myObject的长度将是动态的

我不确定从哪里开始。我猜我将不得不进行大量的拆分和循环,但我愿意接受建议。

你的意思是

var myObject = eval('(' + myData + ')');
?

编辑

它的主要缺点是,您可以将任何javascript代码(不仅仅是JSON)放入eval(Chrome的F12允许任何人利用它)。在使用jQuery时,最好的选择是

var myObject = $.parseJSON(myData);
用于跨浏览器兼容性

$.parseJSON

获取格式良好的JSON字符串并返回结果JavaScript 对象传入格式错误的JSON字符串可能会导致异常 被扔了。例如,以下都是格式错误的JSON 字符串:

{test:1}(test周围没有双引号)。

{'test':1}('test'使用单引号而不是双引号)。


嗯,这很容易做到:

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);

编写解析器,使用
eval
,或者更改格式以使用有效的JSON标记。您需要对其进行JSON格式化,然后使用JSON解析器。以上不是JSON.Valid解决方案,但通常在建议
eval
时给出适当的警告是个好主意。(事实上,根据问题中的代码,在@Guffa's之前,这是唯一正确的解决方案。)@knicket,这就是答案。注意,您的服务器端语言可以将服务器上的本机对象或数组JSONify化为字符串,因此不要尝试自己动手。例如,PHP有
json\u encode()
(和
json\u decode()
)。但是,您应该尝试了解JSONified字符串是什么(不是),以及它在功能上与Javascript中的对象文字语法有什么不同,后者是问题中数据的格式(用双引号括起来)。
var myData = '[{"name":"xxx","data":[1,2,3,4,5]},{"name":"yyy","data":[5,4,3,2,1]}]';

var myObject = $.parseJSON(myData);