I am trying to build a web project where I get details in JSON format, for example:

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

I was trying to show the output in d3 js bar chart. The problem I am facing is the code I've got is working for a JSON file but not for an object deserialized from the JSON. Can any one help me out with this?

The part of the working script for JSON file is this:

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 })]); 

If I change the filename to an object its not working.

5

2 Answers

being a JS library D3 works with the JS objects(along with other JS data types) only, d3.json is just a method to load the object from an external file. So if you dont need to load data from external file then dont use 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})]); 

hope it helps

2

If I change the filename to an object its not working.

Then you should call it in a function and pass the object in the params:

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