2013-04-28 5 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 } ] 
    } 
    ... 
] 

x & y 값은 json2입니다. 여기

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

나는 X & Y의 위치에 대한 json2 호출하고자이 만

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]; }); 

은 무엇인가 : 그러나, 나는 데 문제는 내 변수에 모두 JSON & json2를 사용하고자하는 것입니다 나는 가능한 것을 요구하고있다. 나는 다음을 시도했다.

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

는 0으로 X를 설정하거나 실제로 X – Jose

+0

안녕 @ 데이브 앤더슨의 값을 읽 것은 내가 이렇게 시도, 그러나 그것은이 영향을 가지고 있다는 것입니다 : http://jsfiddle.net/Zc4z9/ 12/ – Jose

+0

안녕하세요 @ 조세, 그 json2 변수에서 첫 번째 개체의 첫 번째 위치에 대한 x 값을 읽을 것입니다. 당신은 기본적으로 객체의 배열을 가지고 있으며 그 배열 내에 배열을 가지고 있습니다. 배열 인덱스를 사용하여 도시에 대한 객체를 가져온 다음 다른 배열 인덱스를 사용하여 위치를 가져와야합니다. 한 도시에 여러 위치가 필요합니까? 당신이 json을 바꿀 수 있다면, 그 위치를 중심으로 []을 버려서 배열이 길어지면 json [0] .location.x가 작동합니다. –