D3 js-chargement de json sans HTTP get

J'apprends d3. Il y a certaines façons de charger les données dans D3 js. Mais tous semblent faire un HTTP GET. Dans mon scénario, j'ai déjà les données json dans une chaîne. Comment puis-je utiliser cette chaîne au lieu de faire une autre requête http? J'ai essayé de chercher de la documentation pour cela mais j'en ai trouvé aucune.

Cela fonctionne:

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

Maintenant, si j'ai:

//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 }]}]}]}'; 

Comment utiliser 'myjson' déjà calculé dans d3 et éviter un appel asynchrone au serveur? Grâce.

62
demandé sur Ravi 2012-06-07 19:24:10

3 réponses

Remplacez simplement d3.json par

json = JSON.parse( myjson );

EXEMPLE:

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

Mise à JOUR 09/2013

Le code Original a changé. Donc varname json devrait être root:

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

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

    //rendering logic here

//} #delete this line
81
répondu Luca Rainone 2013-09-18 20:44:40

Selon cet exemple:

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

Ici, ils stockent les données du graphique dans la variable $ data, et le définissent via le .fonction de données ($data).

J'appliquerais cette méthode à n'importe quel graphique que vous utilisez.

2
répondu dardo 2012-06-07 15:49:49

La réponse de chumkiu a bien fonctionné pour moi mais a eu besoin de quelques réglages - dans la dernière version du graphique à bulles D3, vous devez définir root plutôt que json, comme dans

 root = JSON.parse( myjson );

Alternativement, vous pouvez remplacer " root "par" json " dans le reste du code Bien sûr. :-)

Pour tous ceux qui viennent à cette réponse avec des questions sur D3 node-link trees qui utilisent des ensembles de données locaux, cette réponse a très bien fonctionné pour moi-un grand merci aux contributeurs sur cette page.

2
répondu John Sharp 2013-07-09 15:57:12