json - d3 - 读取 JSON 数据而不是 CSV 文件

我正在尝试使用 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 消息?

java - jackson 在通用列表中读取 json

javascript - Chrome 扩展 "Refused to evaluate a stri

c# - Json空数组在MVC中反序列化为null

c# - 使用注释将嵌套的 JSON 结构反序列化为使用 Json.NET 的扁平类

jquery - 你使用 Ajax JSON 还是 HTML?

html - "modern"浏览器 "handle"一次可以有多少个 HTML 元素?

android - 如何使用 Android Lollipop 中的注释在 Android Jack

c# - WebApi Put如何从指定的属性中告诉未指定的属性设置为null?

php - Android JSON HttpClient 使用 HttpResponse 将数据发