2017-06-06 34 views
-4

私はこのようになります「test.json」と呼ばれるJSONファイルに着いたとき:d3.jsの外側の括弧付きのJSON?

[{ 
"name":"abc", 
"parent":"null", 
"children":[], 
} 
] 

データ全体を包む外側の括弧[]を意味し、とd3.jsでそれを使用することはできません階層機能:

{ 
"name":"abc", 
"parent":"null", 
"children":[], 
} 

d3.json("test.json", function(a) { 

    var hierarchy = d3.hierarchy(a), 
     links = hierarchy.links() 
     nodes = hierarchy.descendants(); 

は今、私は離れてブラケットを離れるときに、「test.json」はこのようになっていることを意味し、そのファイルを使用することが可能です

私の質問は次のとおりです:これは一般的なd3.jsの特有の問題ですか、おそらくhierarchy関数の組み合わせであるのでしょうか、かっこ[]でファイル全体をラップすると、常に動作しませんか?

+5

ある[RTFM](HTTPS: //github.com/d3/d3-hierarchy#hierarchy)〜* "指定された階層データからルートノードを構築します。指定されたデータは、ルートノードを表す**オブジェクト**でなければなりません。 "オブジェクトではなく配列を渡しています。 'd3.hierarchy(a.pop())'を試してください – Phil

+1

配列には複数の要素を入れることができます。配列に複数のオブジェクトが含まれている場合は、何をすべきかを決める必要があります。 – Barmar

+0

@phil: 'd3.hierarchy(a.pop())'は本当に問題を解決しました。私は複数の要素を持っていたときにも働いた。 –

答えて

0

外括弧は配列を示します。その中のオブジェクト/マップを取得するには、インデックス、それをアウト:

a[0] 

だからaがある場合:

[ { 
     "name": "abc", 
     "parent": "null", 
     "children": [] 
    } 
] 

その後a[0]はちょうど

{ 
    "name": "abc", 
    "parent": "null", 
    "children": [] 
}