2013-04-28 193 views
0

我目前調用兩個JSON請求到我的文件:訪問嵌套數據

d3.json("path/to/file.json", function(error, json) { 

    d3.json("path/to/file.json", function(error, json2) { 

    }); 
}); 

JSON 2的結構是這樣的:

[ 
    { "city" : "LA", 
    "locations" : [ { "country" : "USA", "x" : 0, "y" : 0 } ] 
    }, 
    { "city" : "london", 
    "locations" : [ { "country" : "UK", "x" : 0, "y" : 0 } ] 
    } 
    ... 
] 

目前,我正在嘗試訪問xyson2的值。但是,我遇到的問題是,我希望在我的變量同時使用JSON & json2:

var node = svg.selectAll("a.node") 
.data(json.cars) 
.enter().append("a") 
.attr("class", "node") 
; 

在這裏,我想調用json2爲X & y位置ONLY

node.attr("transform", function(d, i) { 
    return "translate(" + d.x + "," + d.y + ")"; 
}); 

node.append('path') 
    .attr("d", d3.svg.symbol().type(function(d) { return shape [d.name]; }).size(120)) 
    .style("fill", function(d) { return colors [d.name]; }); 

是什麼我要求可能..我曾嘗試以下內容:

node.attr("transform", function(d,i) { 
    return "translate(" + json2.locations[d].x + "," + json2.locations[d].y + ")"; 
}); 

但是沒有運氣。任何幫助將是偉大的 - 謝謝。

回答

0

您將需要先選擇包含位置的陣列中的一個對象。位置也是一個對象數組,因此您需要一個索引來訪問它。試試這個獲得LA,USA x變量。

json2[0].locations[0].x 
+0

是設置x爲0,或將實際讀取X – Jose 2013-04-29 00:51:10

+0

嗨@戴夫·安德森的價值,我試圖這樣做,但它有這個影響:http://jsfiddle.net/Zc4z9/ 12/ – Jose 2013-04-29 02:22:45

+0

嗨@Jose,它會讀取json2變量中第一個對象中第一個位置的x值。你基本上有一個對象數組,並在這些數組中。您需要使用數組索引來獲取城市的對象,然後使用另一個數組索引來獲取位置。你需要一個城市的多個地點嗎?如果你可以改變你得到的json然後把[]放在該位置周圍,所以它的數組越長,那麼json [0] .location.x就可以工作。 – 2013-04-29 03:23:50