Chr*_*isW 1 javascript json d3.js
我正在努力从 JSON 文件读取数据。
我想要读取的 JSON 文件具有以下结构:
{"name":"Andy Hunt",
"title":"Big Boss",
"age": 68,
"bonus": true
}
{"name":"Charles Mack",
"title":"Jr Dev",
"age":24,
"bonus": false
}
Run Code Online (Sandbox Code Playgroud)
但是,据我了解,d3.js 只能解析具有以下结构的 JSON 数组:
[
{"name":"Andy Hunt",
"title":"Big Boss",
"age": 68,
"bonus": true
},
{"name":"Charles Mack",
"title":"Jr Dev",
"age":24,
"bonus": false
}
]
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码片段尝试显示第一个数据对象,只是为了看看它是否有效:
d3.json("/data/sample_data.json", function(data) {
console.log(data[0]);
});
Run Code Online (Sandbox Code Playgroud)
这适用于第二个 JSON 结构,但不适用于第一个结构。
现在我的问题是:是否可以使用 d3.js 读取数据?或者我是否必须编写一个程序,将整个 JSON 文件重新格式化为 JSON 数组?
编辑:原来我想使用的数据格式为 NDJSON。因此,目前除了将数据解析为文本并按照 @Mark 解释的方式重新格式化之外,没有其他方法可以使用 d3.js 本地读取数据。
正如@Shashank 指出的那样,你的方法JSON根本无效。d3这与JavaScript 和可接受的格式无关JSON。那么,我们该如何解决呢?您可以在 d3/javascript 本身中执行此操作,而不是预处理文件。
// how many lines of JSON make an object?
var chunks = 5,
data = [];
//download file as TEXT
d3.text("data.txt", function(error, text) {
if (error) throw error;
// split on new line
var txt = text.split("\n");
// iterate it
for (var i = 0; i < txt.length; i += chunks) {
var block = "";
// grab blocks of 5 lines
for (var j = 0; j < chunks; j++ ){
block += txt[i+j];
}
// parse as JSON and push into data ARRAY
data.push(JSON.parse(block));
}
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
这里它运行在一个plunker上。
| 归档时间: |
|
| 查看次数: |
1406 次 |
| 最近记录: |