d3js的JSON调用错误

d3js的JSON调用错误,json,d3.js,Json,D3.js,我试图复制一个在d3js中转换的条形图。但是,当我将数据输入到.json文件中时,会出现错误“无法调用undefined的'forEach'方法”,因此我很确定我调用的.json文件不正确。我已经正确地更改了变量的名称,这些变量是日期而不是文本,所以这可能弄乱了一些东西: 这是我的.json文件: [{"network":"ABC","2002":9860,"2003":10596,"2004":9989,"2005":12217,"2006":12281,"2007":11913,"2008"

我试图复制一个在d3js中转换的条形图。但是,当我将数据输入到.json文件中时,会出现错误“无法调用undefined的'forEach'方法”,因此我很确定我调用的.json文件不正确。我已经正确地更改了变量的名称,这些变量是日期而不是文本,所以这可能弄乱了一些东西:

这是我的.json文件:

[{"network":"ABC","2002":9860,"2003":10596,"2004":9989,"2005":12217,"2006":12281,"2007":11913,"2008":12265,"2009":11050,"2010":9595,"2011":9871,"2012":8339},
{"network":"AZA","2002":0,"2003":0,"2004":0,"2005":0,"2006":213,"2007":0,"2008":0,"2009":201,"2010":236,"2011":212,"2012":0},
{"network":"CBS","2002":13959,"2003":13856,"2004":13581,"2005":12843,"2006":13019,"2007":11726,"2008":11274,"2009":11812,"2010":12538,"2011":12284,"2012":10690}]
我试着把它叫做:

var json 

d3.json("data.json", function(error, result){
  json = result;
  var data = [];
        json.forEach(function(d){
            data.push({variable: +d['2002'], network: d['network']});
         });
  x.domain(data.map(function(d) { return d.network; }));
  y.domain([d3.min(data, function(d) { return d.variable; }), d3.max(data, function(d) {      return d.variable; })]);

任何帮助都将不胜感激

您的D3js代码没有任何错误。可能是json文件无法访问(根据代码,json文件应位于HTML文件的同一文件夹中)。
您可以在“json=result”一行之后使用“console.log(json)”;如果从文件中读取数据,您将在“FireBug”或“开发者工具”(chrome)的控制台中找到它。

您可能拥有比示例中更旧的D3版本。我遇到了同样的问题,发现我版本的D3在json函数上没有错误参数,因此传递的第一个参数(错误为null)应该是json字符串。因此,我找到的两种解决方案是:

(1) 切换参数以首先使用JSON:

d3.json("data.json", function(result, error){ ...
或者干脆删除错误参数


(2) 更新到d3.v3.js。

感谢您报告此问题,
您的错误是因为无法访问json文件。

错误消息表明
json
未定义。如果检索文件时出错,则会发生这种情况。您是否检查了
error
包含的内容?请尝试使用Firebug进行调试并找出json中的内容;看起来它没有加载你期望的内容。也许你的路径错了?我正在运行一个简单的服务器,所以这不是一个跨源错误,chrome inspector只是说:无法调用未定义(匿名函数)的方法“forEach”,因为你的data.json是无法访问的文件。请将它放在你的基本代码文件夹中