Javascript 在google图表中显示json正文

Javascript 在google图表中显示json正文,javascript,json,object,charts,google-visualization,Javascript,Json,Object,Charts,Google Visualization,我对图表有很大的问题。我试图在谷歌图表中显示一些json值,但我总是会出错。 从JSON正文中,我只需要图表上最后一个月的“全部购买”和“日期”。我看到的所有示例都已经有了一个静态的自定义Jsonbody。我希望你能帮助我,告诉我我做错了什么 这是我的jsFile,带有API响应: request(requestApi, function (error, response, body) { if (error) { return res.reject(error);

我对图表有很大的问题。我试图在谷歌图表中显示一些json值,但我总是会出错。 从JSON正文中,我只需要图表上最后一个月的“全部购买”和“日期”。我看到的所有示例都已经有了一个静态的自定义Jsonbody。我希望你能帮助我,告诉我我做错了什么

这是我的jsFile,带有API响应:

    request(requestApi, function (error, response, body) {
    if (error) {
    return res.reject(error);
    }

    var dataJson = JSON.parse(body);

    google.charts.load('current', {packages: ['corechart', 'bar']});
    google.charts.setOnLoadCallback(drawChart);

    function drawChart() {
        var data = new google.visualization.DataTable(dataJson);
        data.addRows([
        [{v: dataJson[0].total_purchases.purchases_all, 
          f: dataJson[0].total_purchases.date }]
        ]);

        var options = {
            chart: {
                title: 'chart '
            },
            hAxis: {
                title: 'week'
            },
            vAxis: {
                title: 'counts',
                viewWindowMode: 'explicit',
                viewWindow: {
                    max: 300,
                    min: 0
                }
            },
            bars: 'vertical',
            width: 600,
            height: 500
        };


    var chart = new google.charts.Bar(document.getElementById('the_chart'));

        chart.draw(data, google.charts.Bar.convertOptions(options));

    }
API的反应如下:

    {
      "total_purchases": [
      {
        "number": 0,
        "purchases_website": 11,
        "purchases_app": 10,
        "purchases_all": 21,
        "date": "2016-07-01"
      },
      {
        "number": 3,
        "purchases_website": 19,
        "purchases_app": 32,
        "purchases_all": 51,
        "date": "2016-05-01"
      },
     {
        "number": 1,
        "purchases_website": 31,
        "purchases_app": 34,
        "purchases_all": 65,
        "date": "2016-06-01"
      },
     {
        "id": 2,
        "purchases_website": 20,
        "purchases_app": 12,
        "purchases": 32,
        "date": "2016-08-01"
     }
    ]
   }
当我在控制台上记录JSON.parse(body)时,我得到以下信息:


由于json不是谷歌期望的格式,
手动加载数据表

  • 创建空白数据表
  • 添加列
  • 添加包含来自json的数据的行
  • 请参阅以下工作片段

    google.charts.load('current'{
    回调:函数(){
    var dataJson={“总采购”:[
    {
    “数字”:0,
    “采购网站”:11,
    “购买应用程序”:10,
    “全部采购”:21,
    “日期”:“2016-07-01”
    },
    {
    “数字”:3,
    “采购网站”:19,
    “购买应用程序”:32,
    “全部采购”:51,
    “日期”:“2016-05-01”
    },
    {
    “数字”:1,
    “采购网站”:31,
    “购买应用程序”:34,
    “全部采购”:65,
    “日期”:“2016-06-01”
    }
    ]};
    //创建空白数据表
    var data=new google.visualization.DataTable();
    //添加列:类型标签
    data.addColumn('string','date');
    data.addColumn(“编号”、“网站”);
    data.addColumn('number','app');
    data.addColumn('number','all');
    //添加json中的每一行
    dataJson.total_purchases.forEach(函数(行){
    data.addRow([
    行。日期,
    row.u网站,
    row.u应用程序,
    行,谢谢
    ]);
    });
    //排序数据表
    data.sort([{column:0}]);
    变量选项={
    图表:{
    标题:“图表”
    },
    哈克斯:{
    标题:“一周”
    },
    言辞:{
    标题:“计数”,
    viewWindowMode:“显式”,
    视图窗口:{
    最高:300,
    最低:0
    }
    },
    酒吧:“垂直”,
    宽度:600,
    身高:500
    };
    var chart=new google.charts.Bar(document.getElementById('the_chart');
    绘制(数据,google.charts.Bar.convertOptions(选项));
    },
    套餐:['bar']
    });
    
    
    要创建google数据表,json必须是@WhiteHat,但我不知道怎么做。你能再给我一个提示吗?:(希望这有帮助——我注意到你的json中的最后一个对象与其他对象有不同的属性,所以我忽略了它-->
    id
    vs.
    number
    &
    purchases
    vs.
    purchases\u all
    Dude.WhiteHat。你的答案非常完整。+1.我不知道你是怎么做到的,但请继续努力。@WhiteHat aah谢谢。)你现在对我来说更容易理解了!我已经尽力了,但是谢谢你,谢谢你!@WhiteHat但还有一个问题:D.我不知道,你是如何排序的。你只需要写这个:data.sort([{column:0}]);它是按哪个值排序的?它是按日期排序的?但它不是,即使我切换到“Daylay”参见参考-,上面的答案按第一列对数据表进行排序(但排序字符串不可靠),第一列和第二列的排序将是-->
    data.sort([{column:0},{column:1}]);
    --您提到了
    'day'
    --列类型应该是
    'datetime'
    'timeofday'
    --但是加载
    'timeofday'
    不同于
    'datetime'
    --请参阅