2

我正在使用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 被视为字符串,因此 jqPlot ($.jqplot ('chart1', MyJsonObject.chartDataPoints) 不会绘制任何内容。

4

3 回答 3

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

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

于 2012-11-05T15:57:26.567 回答
0

如果去掉引号,那是一个有效的数组声明。然后您可以循环遍历将 x 点转换为日期的数组。

于 2012-11-05T15:58:10.087 回答
0

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

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

于 2012-11-05T16:00:14.087 回答