从json编码的字符串转换为[value,value],[value,value]

时间:2014-02-11 15:43:11

标签: javascript php flot

我正在尝试使用flot从我的SQL数据库中绘制数据,这是使用php然后json编码收集的。

目前看起来像:

 [{"month":"February","data":482},{"month":"March","data":0}] 

然而,对于flot来说,数据需要采用

的形式
[X AXIS VALUE, Y AXIS VALUE],[X AXIS VALUE, Y AXIS VALUE],[X AXIS VALUE, Y AXIS VALUE]

ETC ..

我怎么能转换它?

2 个答案:

答案 0 :(得分:1)

使用map返回数组:

var flotData = data.map(function (el) {
  return [el.month, el.data];
});

console.log(flotData); // [["February", 482], ["March", 0]]

答案 1 :(得分:1)

基本过程是将数据转换为数组(或对象,如果您愿意),然后拉出每个绘图点的数据并将其推送到数组中。然后,将该数组转换回字符串。这是一个例子:

// SAMPLE DATA
$json_string = '[{"month":"February","data":482},{"month":"March","data":0}]';

// DEFAULT
$all_points_array = array();

// JSON DECODE THE STRING AND TURN IT INTO AN ARRAY
$json_array = json_decode($json_string, true);

// LOOP THROUGH THE PLOT POINTS AND ADD EACH SET TO AN ARRAY
foreach ($json_array AS $plot_points) {
    $all_points_array[] = '['.$plot_points['month'].','.$plot_points['data'].']';
}

// CONVERT THE ARRAY TO A STRING, SEPARATED BY COMMAS
$all_points = implode(',', $all_points_array);

// PRINT OUT YOUR STRING
echo $all_points;