62 votes

d3 js - chargement de json sans http get

Je suis à l'apprentissage de la 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 de caractères. 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 n'en trouva aucun.

Ceci 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 puis-je utiliser déjà calculée 'myjson' en d3 et éviter un appel asynchrone au serveur? Merci.

81voto

chumkiu Points 6328

Remplacez simplement d3.json appel par

 json = JSON.parse( myjson );
 

C'EST À DIRE:

 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
 

2voto

dardo Points 2164

Selon cet exemple:

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

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

J'appliquerais cette méthode à tout graphique que vous utilisez.

2voto

John Sharp Points 11

La réponse de chumkiu a bien fonctionné pour moi, mais elle nécessitait quelques ajustements: dans la dernière version du diagramme à bulles d3, vous devez définir root plutôt que json, comme dans

  root = JSON.parse( myjson );
 

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

Pour tous ceux qui entendent cette réponse avec des questions sur les arbres de liens de nœuds d3 qui utilisent des ensembles de données locaux, cette réponse a fonctionné à merveille pour moi - un grand merci aux contributeurs sur cette page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X