在JavaScript中将JSON字符串转换为数组

时间:2012-11-05 15:52:03

标签: javascript arrays json string jqplot

我正在使用jqPlot来创建图表。图表的数据点来自使用GSON构建的JSON对象。图表数据点以JavaScript数组格式构建,因此保存要发送到客户端的数据的Java对象存储数据,如下所示:

String chartDataPoints = "[[1352128861000, 0.0], [1352128801000, 0.0], [1352128741000,   0.0], [1352128681000, 0.0], [1352128621000, 0.0],...More chart points in this format ,[[x0,y0], [x1,y2]...]]";

x分是日期。

是否可以直接从JSON对象传递此数据,就像它是一个JavaScript数组一样?目前MyJsonObject.chartDataPoints被视为String,因此jqPlot($ .jqplot('chart1',MyJsonObject.chartDataPoints)不会绘制任何内容。

3 个答案:

答案 0 :(得分:8)

一种选择是使用eval

var arr = eval('(' + json_text + ')');

以上是最简单且最广泛支持的方法,但如果您信任源,则应该只使用eval,因为它将执行任何JavaScript代码。

某些浏览器具有本机JSON解析器,在这种情况下,您可以执行以下操作:

var arr = JSON.parse(json_text);

jQuery等第三方库也可以提供处理JSON的功能。在jQuery中,您可以执行以下操作:

var arr = jQuery.parseJSON(json_text);

最底层的两种方法(使用解析器)是首选方法,因为它们提供了一定程度的保护。

答案 1 :(得分:0)

如果删除引号,那就是有效的数组声明。然后你可以遍历数组,将x点转换为日期。

答案 2 :(得分:0)

看看:https://github.com/douglascrockford/JSON-js

有一种方法可以将字符串解析为一个对象,这是一种“安全”的方法 - 您可以在javascript中执行eval(chartDataPoints),但是总是建议您通过JSON引擎解析它以防万一那里有一些不好的东西!