我正在使用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)不会绘制任何内容。
答案 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引擎解析它以防万一那里有一些不好的东西!