amchartsを使用しようとしていますが、JSON を使用してグラフのデータをフォーマットしたいと考えています。ただし、amcharts が受け入れる構文は有効な JSON ではないようです。
ハードコーディングされた amchart グラフのデータの JavaScript コードは次のとおりです。
var chartData = [{
country: "Czech Republic",
litres: 301.90
}];
ルビーが埋め込まれた同じグラフを作成する場合のコードは次のとおりです。
コントローラ
@chart_data = [{"country": "Czech Republic", "litres": 301.90}]
意見
var chartData = <%= @chart_data.to_json %>;
有効な JSON出力:
[{"country": "Czech Republic", "litres": 301.90}]
ただし、 amcharts が受け入れるのは次のとおりです。
[{country: "Czech Republic", litres: 301.90}]
したがって、amcharts が有効な JSON を受け入れないため、チャートが機能しません。国とリットルを二重引用符なしで「無効な」JSON を作成する方法はありますか? または、amcharts が受け入れる形式でデータを取得するより良い方法はありますか? どんな助けでも大歓迎です。
完全な JavaScript は次のとおりです。
<script type="text/javascript">
var chart;
var legend;
var chartData = [{
country: "Czech Republic",
litres: 301.90
}, {
country: "Ireland",
litres: 201.10
}, {
country: "Germany",
litres: 165.80
}, {
country: "Australia",
litres: 139.90
}, {
country: "Austria",
litres: 128.30
}, {
country: "UK",
litres: 99.00
}, {
country: "Belgium",
litres: 60.00
}];
AmCharts.ready(function () {
// PIE CHART
chart = new AmCharts.AmPieChart();
chart.dataProvider = chartData;
chart.titleField = "country";
chart.valueField = "litres";
chart.outlineColor = "#FFFFFF";
chart.outlineAlpha = 0.8;
chart.outlineThickness = 2;
// WRITE
chart.write("chartdiv");
});
</script>