2012-10-29 71 views
0

我目前正試圖自定義一個例子,如... http://bl.ocks.org/1377729使用D3.json函數來獲取json數據。使用D3.json函數導入json數據

此刻,我一直在努力做到這一點:

 d3.json("http:", function(json) { 

    var nodes = []; 
    var labelAnchors = []; 

在這裏,我試圖導入的功能,但它沒有做任何事情

 for(var i = 0; i < 30; i++) { 


      var node = json; 
      nodes.push(node); 
      labelAnchors.push({ 
       node : node 
      }); 
      labelAnchors.push({ 
       node : node 
      }); 
     }; 

我也試圖把函數進入.text函數

 anchorNode.append("svg:text") 
      .text(function(d, i) {return i % 2 == 0 ? "" : d.node.json }) 
      .style("fill", "#555") 
      .style("font-family", "Arial") 
      .style("font-size", 12); 

有誰能告訴我哪裏出錯了請!

+0

您的json網址未顯示完成。 https://github.com/mbostock/d3/wiki/Requests#wiki-d3_json – nautat

+0

嗨@nautat我故意錯過了那部分了..是否還有其他什麼是錯的? – user1701622

+0

你能分享一下你的json數據結構嗎?從您引用的示例中,可以看到節點和labelAnchors是對象的數組(長度爲30)。它們的節點對象如下所示:{label:「node0」}並形成節點數組。形成labelAnchors數組的對象如下所示:{node:{label:「node0」}}。 – nautat

回答

0

首先通過逐步穿過你的json數組來構建節點數組和labelAnchors數組。

for (var i = 0; i < json.length; i++) { 
    var node = json[i]; 
    nodes.push(node); 
    labelAnchors.push({ 
     node : node 
    }); 
    labelAnchors.push({ 
     node : node 
    }); 
    }; 

的例子依賴於擁有了一個名爲label主要對象,而在你的情況下密鑰被稱爲Name。因此,您需要將示例代碼調整爲如下形式:

anchorNode.append("svg:text") 
    .text(function(d, i) { 
     return i % 2 == 0 ? "" : d.node.Name; 
    }) 
    .style("fill", "#555") 
    .style("font-family", "Arial") 
    .style("font-size", 12);