我正在尝试使用 JSON 将数据读入我的日历可视化。在 使用 CSV 文件效果很好的那一刻:
d3.csv("RSAtest.csv", function(csv) {
var data = d3.nest()
.key(function(d) { return d.date; })
.rollup(function(d) { return d[0].total; })
.map(csv);
rect.filter(function(d) { return d in data; })
.attr("class", function(d) { return "day q" + color(data[d]) +
"-9"; })
.select("title")
.text(function(d) { return d + ": " + data[d]; });
});
它读取以下 CSV 数据:
date,total
2000-01-01,11
2000-01-02,13
.
.
.etc
关于我如何读取以下 JSON 数据的任何指示:
{"2000-01-01":19,"2000-01-02":11......等}
我尝试了以下方法,但它对我不起作用(datareadCal.php 吐出 为我取出 JSON):
d3.json("datareadCal.php", function(json) {
var data = d3.nest()
.key(function(d) { return d.Key; })
.rollup(function(d) { return d[0].Value; })
.map(json);
谢谢
最佳答案
您可以使用 d3.entries()将对象字面量转换为键/值对数组:
var countsByDate = {'2000-01-01': 10, ...};
var dateCounts = d3.entries(countsByDate);
console.log(JSON.stringify(dateCounts[0])); // {"key": "2000-01-01", "value": 10}
不过,您会注意到的一件事是结果数组没有正确排序。您可以像这样按键升序对它们进行排序:
dateCounts = dateCounts.sort(function(a, b) {
return d3.ascending(a.key, b.key);
});
https://stackoverflow.com/questions/10076940/
相关文章:
javascript - 如何处理奇怪组合的 websocket 消息?
javascript - Chrome 扩展 "Refused to evaluate a stri
c# - 使用注释将嵌套的 JSON 结构反序列化为使用 Json.NET 的扁平类
jquery - 你使用 Ajax JSON 还是 HTML?
html - "modern"浏览器 "handle"一次可以有多少个 HTML 元素?
android - 如何使用 Android Lollipop 中的注释在 Android Jack