Javascript d3.js解析文件中类似JSON的数据
我正在努力从JSON文件中读取数据 我要读取的JSON文件具有以下结构:Javascript d3.js解析文件中类似JSON的数据,javascript,json,d3.js,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 } [ {"name":"Andy Hunt", "title":"Big Boss", "age": 68, "b
{"name":"Andy Hunt",
"title":"Big Boss",
"age": 68,
"bonus": true
}
{"name":"Charles Mack",
"title":"Jr Dev",
"age":24,
"bonus": false
}
[
{"name":"Andy Hunt",
"title":"Big Boss",
"age": 68,
"bonus": true
},
{"name":"Charles Mack",
"title":"Jr Dev",
"age":24,
"bonus": false
}
]
然而,据我所知,d3.js只能解析具有以下结构的JSON数组:
{"name":"Andy Hunt",
"title":"Big Boss",
"age": 68,
"bonus": true
}
{"name":"Charles Mack",
"title":"Jr Dev",
"age":24,
"bonus": false
}
[
{"name":"Andy Hunt",
"title":"Big Boss",
"age": 68,
"bonus": true
},
{"name":"Charles Mack",
"title":"Jr Dev",
"age":24,
"bonus": false
}
]
我使用此代码段试图显示第一个数据对象,只是为了看看它是否有效:
d3.json("/data/sample_data.json", function(data) {
console.log(data[0]);
});
这适用于第二个JSON结构,但不适用于第一个JSON结构
现在我的问题是:是否可以用d3.js以某种方式读入数据?
还是我必须编写一个程序,将整个JSON文件重新格式化为JSON数组
编辑:结果表明我想要使用的数据格式为NDJSON。因此,目前除了将数据解析为文本并按照@Mark解释的方式在移动中重新格式化之外,没有办法用d3.js本机读取数据。您试图读取的JSON文件格式不正确JSON(根据标准)可以是名称/值对的集合,即对象或对象列表,即对象数组。请参阅:
=> {name: "Andy Hunt", title: "Big Boss", age: 68, bonus: true, value: 500}
我建议您将JSON文件更改为对象数组。希望这能澄清问题。您试图读取的JSON文件格式不正确JSON(根据标准)可以是名称/值对的集合,即对象或对象列表,即对象数组。请参阅:
=> {name: "Andy Hunt", title: "Big Boss", age: 68, bonus: true, value: 500}
我建议您将JSON文件更改为对象数组。希望这能澄清问题。正如@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);
});
//一个对象包含多少行JSON?
var chunks=5,
数据=[];
//以文本形式下载文件
文本(“data.txt”,函数(错误,文本){
如果(错误)抛出错误;
//在新线上拆分
var txt=text.split(“\n”);
//迭代它
for(变量i=0;i
这里它运行在一个.上,正如@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);
});
//一个对象包含多少行JSON?
var chunks=5,
数据=[];
//以文本形式下载文件
文本(“data.txt”,函数(错误,文本){
如果(错误)抛出错误;
//在新线上拆分
var txt=text.split(“\n”);
//迭代它
for(变量i=0;i
这是在a上运行的。谢谢您!这就像一个符咒,我能够修改它来解析我的数据。我仍然有点困惑,为什么我的数据源是无效的,因为其他开发人员似乎没有任何问题。但是有了这个解决方案,我应该能够让它运行。谢谢你!这就像一个符咒,我能够修改它来解析我的数据。我仍然有点困惑,为什么我的数据源是无效的,因为其他开发人员似乎没有任何问题。但有了这个解决方案,我应该能够让它运行。