web-dev-qa-db-ja.com

d3 js-HTTP getなしでjsonをロードする

私はd3を学んでいます。 データをロードする特定の方法 d3 jsがあります。しかし、それらはすべてHTTP GETを行うようです。私のシナリオでは、すでにJSONデータが文字列に含まれています。別のhttp要求を作成する代わりにこの文字列を使用するにはどうすればよいですか?このドキュメントを探してみましたが、見つかりませんでした。

これは動作します:

d3.json("/path/flare.json", function(json) {
    //rendering logic here
}

今、私が持っている場合:

//assume this json comes from a server (on SAME DOMAIN)
var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}'; 

D3で既に計算された「myjson」を使用して、サーバーへの非同期呼び出しを回避するにはどうすればよいですか?ありがとう。

62
Ravi

単にd3.jsonで呼び出す

json = JSON.parse( myjson );

IE:

var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}';

// d3.json("/path/flare.json", function(json) { #delete this line

    json = JSON.parse( myjson ); //add this line

    //rendering logic here

//} #delete this line

2013年9月更新

元のコードが変更されました。したがって、varname jsonrootになります。

// d3.json("flare.json", function(error, root) { #delete this line

    root = JSON.parse( myjson ); //add this line

    //rendering logic here

//} #delete this line
81
Luca Rainone

この例によると:

http://phrogz.net/JS/d3-playground/#StockPrice_HTML

ここでは、変数$ data内にグラフデータを格納し、.data($ data)関数を介してグラフデータを設定しています。

使用しているグラフにこの方法を適用します。

2
dardo

Chumkiuからの答えは私にとってはうまくいきましたが、いくつかの調整が必要でした-d3バブルチャートの最新バージョンでは、次のようにjsonではなくrootを定義する必要があります

 root = JSON.parse( myjson );

あるいは、残りのコードで「root」を「json」に置き換えることもできます。 :-)

ローカルデータセットを利用するd3ノードリンクツリーに関する質問でこの回答に来た人にとっては、この回答は私にとってはうまくいきました。このページの貢献者に感謝します。

2
John Sharp