Javascript 将字符串转换为数组

Javascript 将字符串转换为数组,javascript,jquery,jqplot,Javascript,Jquery,Jqplot,我正在Web服务中创建一些数据作为字符串,并返回该字符串以供jqPlot使用。我的问题是jqPlot需要一个对象,而我正在努力将字符串转换为正确的格式 这个工作示例很好,因为line1变量被构造为一个对象 var line1 = [['2007-02-18 00:00:00',4980],['2007-02-24 09:50:00',4230],['2007-05-20 00:00:00',5060]] var plot1 = $.jqplot('chart1', [line1], {

我正在Web服务中创建一些数据作为字符串,并返回该字符串以供jqPlot使用。我的问题是jqPlot需要一个对象,而我正在努力将字符串转换为正确的格式

这个工作示例很好,因为line1变量被构造为一个对象

var line1 = [['2007-02-18 00:00:00',4980],['2007-02-24 09:50:00',4230],['2007-05-20 00:00:00',5060]]
var plot1 = $.jqplot('chart1', [line1], {
                    title: 'Test Plot',
                    title: 'Data with Dates',
                    axes: { xaxis: { renderer: $.jqplot.DateAxisRenderer} },
                });
在我的场景中,Web服务将第1行作为字符串返回:

line1 = "[['2007-02-18 00:00:00',4980],['2007-02-24 09:50:00',4230],['2007-05-20 00:00:00',5060]]"
如何操作此字符串,以便将其用作jqPlot的数组,如工作示例中所示?

JSON.parse()
将完成此操作。您需要对其进行填充,或者在不支持它的浏览器中使用
eval

if (window.JSON) {
    line1 = JSON.parse(line1);
}
else if (src === trustedSource && looksLikeJSON(line1)) {
    line1 = eval(line1);
}

是推荐的垫片,它的行为与本地
JSON
对象类似

如果目标用户代理定义了
window.JSON
对象,那么您只需调用:

var line1 = JSON.parse([your string from webservice]);

如果用户代理在本机上不支持JSON对象,那么您必须包含此处的脚本:

您需要将字符串计算为JavaScript对象。这就是这种方法的目的

line1=eval([[2007-02-18 00:00:00',4980],[2007-02-24 09:50:00',4230],[2007-05-20 00:00:00',5060]])


请记住,您可能会在使用特殊字符等方面遇到问题。

既然您已经在使用jQuery,为什么不将其投入使用呢


对于Vanilla JS,JSON.stringify和JSON.parse用于使用JSON操作数据。
请参阅此页,然后重试

JSON也只能以字符串形式存在于JavaScript中,因为它是一种文本交换格式。我想您的意思是希望将字符串转换为JavaScript数组(我相应地编辑了您的问题)。您可以控制web服务吗?在您的情况下,只需删除双引号(“),如果您无法使用JSON.org中的JSON解析器或使用eval函数(不可靠),那么它应该可以工作。感谢您更正了@FelixKling的问题。尽管使用
jQuery.parseJSON()
似乎是一个可行的解决方案。@Fly\u Trap:但字符串不是JSON,字符串必须用双引号括起来,即
[“2007-02-18 00:00:00”,4980]
。如果您解决了这个问题,那么是的,您可以使用该函数,并且在这种情况下使用JSON是合适的。编辑:我刚刚看到您已经注意到了这一点。我仍然建议您在服务器端生成适当的JSON。它不是必须是
eval('line1='+line1);
或者(不太容易混淆)
eval('object1='+line1)
@Jochem:whoops这里有个小错误。是的,你需要从
eval
分配结果。我保持变量名不变,因为OP使用了相同的变量来表示字符串和原始示例数组,后者省略了
var
语句。我尝试了这个方法,但最初遇到了sing的问题le quotes:“无效的JSON”。因此我运行了
line1.replace(/'/g,“\”)
将单引号转换为双引号,这就成功了。
var json_string = "some_json_string",
    obj = $.parseJSON(json_string);