1

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 には 3 つの問題があります。

  1. 中括弧の代わりに角括弧が必要です。と
  2. キーと値のペアを区切るには、フルコロンではなくコンマを使用する必要があります。と
  3. 文字列「2008」が値 2008 になるように、引用符を削除する必要があります。

JSON 出力をフォーマットする必要がある方法は次のとおりです。

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

この JSON オブジェクトをクリーンアップする最善の方法は何ですか? CodeIgniter コードを使用してサーバー側で行う必要がありますか? または、JSON オブジェクトが作成された後、クライアント側で JavaScript を使用して実行する必要がありますか? ありがとう。

4

1 に答える 1