我是json
和d3
的新手,这可能是一个新手的错误。
我试图将json数据存储在变量中,但它会给出意外的令牌错误。
这是我的代码,我正在解析和存储数据 -
var links = [];
var nodes = [];
var data;
d3.json("sample1.json", function(error, data) {
nodes = JSON.parse(data).nodes;
links = JSON.parse(data).links;
});
json文件是这样的 -
{
"nodes":[
{""name"":""17925"",""group"":6},
{""name"":""20209"",""group"":215}]
"links"[
{""source"":0,""target"":98,""value"":1},
{""source"":0,""target"":108,""value"":2}]
}
提前致谢
答案 0 :(得分:1)
看起来你是在引用节点和链接中的双引号。试试这个
"nodes":[{"name":"17925","group":6},{"name":"20209","group":215}]
"links"[{"source":0,"target":98,"value":1},{"source":0,"target":108,"value":2}]
答案 1 :(得分:0)
d3.json
method已经为您解析了JSON:
"使用两个参数调用回调:错误(如果有)和 解析的JSON。"
所以,你不必再次解析它了:
var links, nodes;
d3.json("sample1.json", function(error, data) {
nodes = data.nodes;
links = data.links;
});
正如roryok指出的那样,JSON有双重标记。此外,它缺少属性周围的对象说明符,它应该是:
{
"nodes":[{"name":"17925","group":6},{"name":"20209","group":215}]
"links"[{"source":0,"target":98,"value":1},{"source":0,"target":108,"value":2}]
}
附注:该方法是异步的,因此稍后在数据到达时将调用回调函数。您已在呼叫之外声明了变量,但它们在呼叫后不会立即包含数据。
答案 2 :(得分:0)
您的JSON文件无效,这就是为什么JSON.parse无法正常工作。
有效的JSON文件就是这样(在这种情况下,1和2是ID)。
{
"nodes":{
"1":{
"name":"17925",
"group":6
},
"2":{
"name":"20209",
"group":215
}
}
}
答案 3 :(得分:-1)
字符串值中的双引号应该被转义;根据{{3}},"
是JSONEscapeCharacter
:
JSONEscapeCharacter ::中的一个
" / \ b f n r t
此外,您似乎在:
属性键后缺少冒号(links
)。
这将通过解析:
{
"nodes": [
{
"\"name\"": "\"17925\"",
"\"group\"": 6
},
{
"\"name\"": "\"20209\"",
"\"group\"": 215
}
],
"links": [
{
"\"source\"": 0,
"\"target\"": 98,
"\"value\"": 1
},
{
"\"source\"": 0,
"\"target\"": 108,
"\"value\"": 2
}
]
}