从JSON中删除引号,并用方括号替换大括号

时间:2013-09-27 21:08:19

标签: jquery json codeigniter flot

我正在尝试创建一个数据数组,以便与FLOT图表一起使用。我正在使用此CodeIgniter代码生成数组:

function ajaxmuniChart1c(){
$muni = $this->input->POST('muni');
$q = $this->db->query("SELECT SaleYear AS Y, NewSaleType AS T, count(*) AS C, format((sum(SalePrice) / sum(Quantity1)),0) AS R FROM tblsales WHERE  tblsales.SaleYear > 2007 AND tblsales.Quantity1 > 2000 AND (tblsales.NewSaleType = 'Industrial') AND tblsales.Municipality = '".$muni."' GROUP BY T,Y ORDER BY T,Y");
$json_Array    = array();
foreach ($q->result_array() as $row){
    $JsonArray[] = array( floatval($row['Y']) => floatval($row['R']) );
}
$labeledArray = array( 
    "label" => "Average Sale Price per SF",
    "data" => $JsonArray
);
echo json_encode($labeledArray);
exit;
}

此代码的问题在于无法绘制生成的JSON对象,因为“值”实际上是字符串。这是有问题的JSON输出:

 {"label":"Average Price","data":[{"2008":96},{"2009":74},{"2010":73},{"2011":96},{"2012":124},{"2013":104}]}

这个JSON有三个问题:

  1. 需要方括号而不是花括号;和
  2. 需要使用逗号分隔key->值对而不是全冒号;和
  3. 需要删除引号,以便字符串“2008”成为值2008。
  4. 以下是需要格式化JSON输出的方式:

     ["label":"Average Price","data":[[2008,96],[2009,74],[2010,73],[2011,96],[2012,124],[2013,104]]]
    

    清理此JSON对象的最佳方法是什么?我应该在服务器端使用CodeIgniter代码吗?或者我应该在JSON对象生成后在javascript中在客户端执行此操作?感谢。

1 个答案:

答案 0 :(得分:2)

由于您生成了JSON,因此可以更改其来源。

$JsonArray[] = array( floatval($row['Y']) => floatval($row['R']) );

- >

$JsonArray[] = array( floatval($row['Y']), floatval($row['R']) );

(这会将{"2008": 80}等数组更改为[2008, 80]。)