我正在尝试使用外部JSON文件在cytoscape.js中创建图形。目标是在图形中获得基于事件的变化(即输入数据的变化)。为了达到这个目的,我想到了使用外部JSON文件。
使用以下调用来获取JSON内容:
var treeData;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
treeData = JSON.parse(this.responseText);
}
};
xhttp.open("GET", "http://localhost/myfile.json", true);
xhttp.send();
并将treeData提供给元素:
elements: treeData,
(我已尝试过不解析JSON)。
以下是JSON文件的结构:
{
"nodes": [
{ "data": { "id": "j", "name": "Jerrymmmmmmm", "faveColor": "#6FB1FC", "size": 150} },
{ "data": { "id": "e", "name": "Elainemmmmmmm", "faveColor": "#EDA1ED", "size": 100 } },
{ "data": { "id": "k", "name": "Kramemmmmrmmm", "faveColor": "#86B342", "size":90 } },
{ "data": { "id": "g", "name": "Georgemmmmmmm", "faveColor": "#F5A45D", "size":75} },
],
"edges": [
{ "data": { "source": "j", "target": "e", "faveColor": "red", } },
{ "data": { "source": "j", "target": "k", "faveColor": "red",} },
{ "data": { "source": "j", "target": "g", "faveColor": "black",} },
]
}
获得以下错误: JSON位于1449位JSON.parse()的XMLHttpRequest.xhttp.onreadystatechange中的意外标记]。
非常感谢帮助......谢谢
答案 0 :(得分:2)
你在哥们那里有一些额外的逗号。在" red"之后" black",在你的最后一个"节点"之后对象,以及你的最后一个"边缘"宾语。试试这个:
{
"nodes": [{
"data": {
"id": "j",
"name": "Jerrymmmmmmm",
"faveColor": "#6FB1FC",
"size": 150
}
}, {
"data": {
"id": "e",
"name": "Elainemmmmmmm",
"faveColor": "#EDA1ED",
"size": 100
}
}, {
"data": {
"id": "k",
"name": "Kramemmmmrmmm",
"faveColor": "#86B342",
"size": 90
}
}, {
"data": {
"id": "g",
"name": "Georgemmmmmmm",
"faveColor": "#F5A45D",
"size": 75
}
}],
"edges": [{
"data": {
"source": "j",
"target": "e",
"faveColor": "red"
}
}, {
"data": {
"source": "j",
"target": "k",
"faveColor": "red"
}
}, {
"data": {
"source": "j",
"target": "g",
"faveColor": "black"
}
}]
}
此外,一个非常有用的工具可以帮助您调试JSON错误是jsonlint:http://jsonlint.com/