Javascript 在google图表中显示json正文
我对图表有很大的问题。我试图在谷歌图表中显示一些json值,但我总是会出错。 从JSON正文中,我只需要图表上最后一个月的“全部购买”和“日期”。我看到的所有示例都已经有了一个静态的自定义Jsonbody。我希望你能帮助我,告诉我我做错了什么 这是我的jsFile,带有API响应: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);
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不是谷歌期望的格式,
手动加载数据表
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'
--请参阅