JSON解析或删除数据中的双引号,以获取rails中的表单模型或数据库

时间:2013-10-15 09:46:03

标签: javascript ruby-on-rails json highcharts

foo.html.erb

<script type="text/javascript">
   var all_user = <%= @user.all_user_bar_chart.to_json.html_safe) %>;
</script>

abc.js

$(function () {
 if ($("#foo").length > 0){
     var user_charts = new Highcharts.Chart({
        chart: {
            renderTo: 'foo'
        },
        title: {
            text: 'User Statistics',
            x: -20 //center
        },
        subtitle: {
            text: ' ',
            x: -20
        },
        xAxis: {
            categories: ['a', 'b', 'c', 'd']
        },
        yAxis: {
            title: {
                text: 'point'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }]
        },
        tooltip: {
            valueSuffix: '°C'
        },
        legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'middle',
            borderWidth: 0
        },
        series: all_user
    });
    console.log(all_user);
  }
});

这里输出表单模型数据或foo.html.erb: -
  “[{\” 名称\ “:\” A \ “\ ”数据\“:94},{\ ”名称\“:\ ”B \“,\ ”数据\“:356},{\” 名\ “:\” C:\ “\ ”数据\“:1}]”

我想删除(“”)双引号并根据`highcharts'支持这些数据以获得用户的基本折线图。我也试过JSON.parse,但它不起作用。每次获得结果字符串“[{\”name \“:\”A \“,\”data \“:94}]”

1 个答案:

答案 0 :(得分:0)

to_json结果是字符串,你需要javascript对象哈希。

在highchart中,你可以将series属性设置为object而不是string,所以你需要一个来自该字符串的对象,以便在javascript中使用它:

series: JSON.parse(all_user)

例如:

test = "[{\"name\":\"A\",\"data\":94},{\"name\":\"b\",\"data\":356},{\"name\":\"c\",\"data\":1}]"
JSON.parse(test)
# it will return 
[{name: "A", data: 94}, {name: "b", data: 356}, {name: "c", data: 1}]