如何加载JSON对象而不是JSON文件

17

我正在尝试构建一个网络项目,其中我以JSON格式获取详细信息,例如:

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

我正在尝试在d3 js柱状图中展示输出结果。我遇到的问题是,我得到的代码适用于JSON文件,但不适用于从JSON反序列化的对象。有人能帮我解决这个问题吗?

适用于JSON文件的可行脚本部分如下:

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

如果我将文件名更改为对象,它就无法工作。

这怎么是 Java 呢? - fge
3
请在此处阅读文档:https://github.com/mbostock/d3/wiki/Requests文档明确说明您必须提供文件路径,该函数不支持接收对象。 - shakeel osmani
是的,但如果我有一个JSON对象,我该如何继续? - monic
你尝试过这个例子吗?>> https://jsfiddle.net/enigmarm/3HL4a/13/ - Vikrant Kashyap
请查看此链接 >> https://dev59.com/G4nda4cB1Zd3GeqPCKhY - Anubhab
2个回答

28
作为一个JS库,D3只能与JS对象(以及其他JS数据类型)一起使用。 d3.json 只是从外部文件加载对象的方法。所以,如果您不需要从外部文件加载数据,那么就不要使用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})]);

希望能对您有所帮助


从cookie中提取json数据怎么样?我将json数据从cookie中提取到一个变量中,但是无法使用d3.json函数更新我的图形。从这个答案中可以看出,使用d3.json函数无法实现这一点。你能否使用该函数并从cookie中提取数据,还是只能从文件中提取? - antman1p
不管你从哪里以及如何获取数据,最终都是将所需数据传递给d3方法。如果需要从文件中提取数据,请使用d3.json,否则不需要。 如果您能提供一些关于您的操作方式的代码,那么会更好,否则很难猜测您面临的问题。一个jsfiddle或任何类似服务的链接到您的代码将更有帮助。 - panghal0

1
如果我将文件名更改为对象,则无法正常工作。然后您应该在函数中调用它并将对象传递给参数:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接