Javascript 将字符串转换为数组
我正在Web服务中创建一些数据作为字符串,并返回该字符串以供jqPlot使用。我的问题是jqPlot需要一个对象,而我正在努力将字符串转换为正确的格式 这个工作示例很好,因为line1变量被构造为一个对象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], {
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);