将字符串转换为数组

时间:2012-01-25 12:28:23

标签: javascript jquery jqplot

我在webservice中创建一些数据作为字符串并返回该字符串以与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} },
                });

在我的场景中,webservice将第一行作为字符串返回:

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

如何操作此字符串,以便将其用作jqPlot的数组,如工作示例中所示?

5 个答案:

答案 0 :(得分:2)

JSON.parse()会这样做。您需要在不支持它的浏览器中对其进行填充或使用eval

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

json2.js是推荐的垫片,它的行为与原生JSON对象相同。

答案 1 :(得分:2)

既然你已经使用了jQuery,为什么不把它扔进the utility function made especially for dealing with this problem

var json_string = "some_json_string",
    obj = $.parseJSON(json_string);

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

您需要将String评估为JavaScript对象。这就是eval方法的用途。

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

请记住,您可能会遇到特殊字符等问题。

答案 4 :(得分:1)

使用Vanilla JS,JSON.stringify和JSON.parse用于使用JSON操作数据。 可以参考此JavaScript With JSONJSON Example