我正在尝试创建一个数据数组以用于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 存在三个问题:
- 需要方括号而不是大括号;和
- 需要用逗号分隔key->value对而不是全冒号;和
- 需要删除引号,以便字符串“2008”变为值 2008。
以下是 JSON 输出需要格式化的方式:
["label":"Average Price","data":[[2008,96],[2009,74],[2010,73],[2011,96],[2012,124],[2013,104]]]
清理此 JSON 对象的最佳方法是什么?我应该在服务器端使用 CodeIgniter 代码吗?或者我应该在创建 JSON 对象后在 javascript 客户端执行此操作?谢谢。