web-dev-qa-db-fra.com

comment charger un objet json au lieu d'un fichier json

J'essaie de créer un projet Web dans lequel les détails sont au format JSON, par exemple:

{
    "file_id": 333, 
    "t": "2016-03-08 12:00:56"
}

J'essayais de montrer la sortie dans l'histogramme d3 js. Le problème auquel je suis confronté est que le code que j'ai obtenu fonctionne pour un fichier JSON, mais pas pour un objet désérialisé à partir du JSON. Quelqu'un peut-il m'aider avec cela?

La partie du script de travail pour le fichier JSON est la suivante:

d3.json("FILENAME", function(error, data) {
    data = JSON.parse(data);
    x.domain(data.map(function(d) { return d.letter }));
    y.domain([0, d3.max(data, function(d) { return d.frequency })]);

Si je change le nom de fichier en un objet, cela ne fonctionne pas.

9
monic

étant une bibliothèque JS D3 fonctionne uniquement avec les objets JS (avec d'autres types de données JS), d3.json est simplement une méthode pour charger l'objet à partir d'un fichier externe. Donc, si vous n’avez pas besoin de charger des données depuis un fichier externe, n’utilisez pas d3.json

//d3.json("FILENAME", function(error, data) {
    //data = JSON.parse(data);
    var data = {
        "file_id": 333, 
        "t": "2016-03-08 12:00:56"
    }; //your own object
    x.domain(data.map(function(d) { return d.file_id}));
    y.domain([0, d3.max(data, function(d) { return d.t})]);

j'espère que ça aide

17
panghal0

Si je change le nom du fichier en objet, cela ne fonctionne pas.  

Ensuite, vous devriez l'appeler dans une fonction et passer l'objet dans les paramètres: 

var obj = {}; // the object to be be passed for chart

function updateGraph(o){ // get in the params here
    var x = d3.scale.ordinal().rangeRoundBands([0, width]),
        y = d3.scale.linear().range([height, 0]);

    x.domain(o.letter);
    y.domain([0, o.frequency]);
}

updateGraph(obj); // <----pass it here
0
Jai