【发布时间】:2020-02-26 14:36:56
【问题描述】:
由于未正确拟合 json 格式数据,我无法使用 google 图表绘制数据。我无法弄清楚如何操纵数据以获得预期的格式。数据来自 csv 文件。
我从 php 申请了file_get_contents(),然后返回:
[{"Fecha3":1566259200000,"Precio":30.0},
{"Fecha3":1566345600000,"Precio":6.0},
{"Fecha3":1566432000000,"Precio":4.0},
{"Fecha3":1566518400000,"Precio":44.0},
{"Fecha3":1566777600000,"Precio":80.0},
{"Fecha3":1566864000000,"Precio":2.0}
]
(简称解释)
所以我将 Unix 日期转换为 Google Charts 需要的格式。
当我应用下面的 php 代码时,getjson.php 文件的输出是:
{"new Date(2019, 08, 20)":30,
"new Date(2019, 08, 21)":6,
"new Date(2019, 08, 22)":4,
"new Date(2019, 08, 23)":44,
"new Date(2019, 08, 26)":80,
"new Date(2019, 08, 27)":2
}
(简称解释)
getjson.php
<?php
$fecha = new DateTime();
$strJsonFileContents = file_get_contents("datos_nego2.json");
$arr = json_decode($strJsonFileContents, true);
$result = [];
$i = 0;
// Loop to convert the unix date and sort the data
foreach($arr as $item) {
$uses1 = $item['Fecha3']/1000;
$uses2 = $item['Precio'];
$fecha->setTimestamp($uses1);
$datevar = "new Date(" .$fecha->format('Y, m, d') . ")";
// I think months have to be months - 1
$result[$datevar] = $uses2;
$i++;
}
$jsonTable = json_encode($result);
echo $jsonTable;
?>
然后,我加载的文件是里面的javascript代码:
var jsonData = $.ajax({
url: "getjson.php",
dataType: "json",
async: false
}).responseText;
var data = new google.visualization.DataTable(jsonData);
data.addColumn('date', 'Fecha');
data.addColumn('number', 'Number');
var options = {
[...]
hAxis: { // I put fixed dates for testing
viewWindow: {
min: new Date(2019, 0, 1),
max: new Date(2019, 11, 31)
},
[...]
显示图表,但未显示数据。
Javascript console.log(jsonData) 显示:
我读过here 的格式应该是:
{
"cols": [
{"id":"","label":"Topping","pattern":"","type":"string"},
{"id":"","label":"Slices","pattern":"","type":"number"}
],
"rows": [
{"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
{"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
]
}
但我不知道如何转换!
我尝试过但失败的可能解决方案:
如上所述将csv原始文件转换为json样式。
在
var jsonData下面添加javascript代码来操作它。
我在其他示例中看到了不同的解决方案:
data.addRows([
[new Date(2019, 1, 1), 0.2], [new Date(2019, 2, 1), 0.8],
[new Date(2019, 3, 1), 0.4], [new Date(2019, 4, 1), 0.4],
]);
我也尝试过,但从未实现绘制数据。
如果有任何建议或 sn-p 代码,我将不胜感激。
非常感谢您的时间和考虑! :-)
【问题讨论】:
-
问题(我认为)是您的日期创建被视为字符串(
"new Date(2019, 08, 20)"周围的引号)。不知道如何解决这个问题。 -
你有没有发现
"new Date(2019, index3.php:31 08, 21)":6,看起来有点像一条错误消息!!!!你检查过 PHP 错误日志 -
@RiggsFolly index3.php:31 是显示在右上角的上下文信息。与console.log无关,谢谢!
标签: javascript php json csv google-visualization