我正在尝试迭代并使用D3 Javascript从JSON文件中检索一些数据。以下是JSON文件:
{
"Resources":
[
{
"subject": "Node 1",
"group" : "1"
},
{
"predicate": "Node 2",
"group" : "2"
},
{
"object": "Node 3",
"group" : "3"
},
{
"subject": "Node 4",
"group" : "4"
},
{
"predicate": "Node 5",
"group" : "5"
},
{
"object": "Node 6",
"group" : "6"
}
]
}
这是我在D3 Javascript中用于迭代和检索数据的代码:
d3.json("folder/sample.json", function(error, graph) {
document.write(graph.Resources[0].subject);
// The code for retrieving all the elements from the JSON file
});
使用这段代码,我只能检索第一个主题:Node 1
。我甚至无法检索group
。任何人都可以帮助我迭代JSON文件Resources
并使用任何类型的迭代(例如for循环)检索元素:subject, predicate, object and group
。非常感激您的帮忙。
答案 0 :(得分:2)
JSON文件中的组行应该看起来像"group" : "2"
。此外,您的JSON包含单个对象(Resources
);这就是为什么你的document.write
只被召唤一次。您需要遍历Resources
:
d3.json("test.json", function(error, graph) {
var resources = graph.Resources;
for (var i = 0; i < resources.length; i++) {
var obj = resources[i]
for (var key in obj) {
console.log(key+"="+obj[key]);
}
}
});
会帮你的
subject=Node 1
group=1
...
答案 1 :(得分:0)
我想在几个问题的评论中总结一下我已经写过的内容。
由于发布的JSON文件无效,因此无法对其进行迭代。原始JSON文件:
{
"Resources":
[
{
"subject": "Node 1",
"group" = "1"
},
...
{
"object": "Node 6",
"group" = "6"
}
]
}
包含属性group = "x"
的每一行都是错误的。它应该是group : "x"
。
这些错误/错别字很容易被忽视。他们可以找到使用JSON validator等适当工具检查JSON文件。在这种情况下,JSONLint工具报告:
Parse error on line 5:
... "group"="1" } ]
----------------------^
Expecting '}', ':', ',', ']'
在修复文件格式之后,可以使用任何循环轻松完成迭代:变量graph
包含对象资源,它是一个对象数组。它们中的每一个都包含公共属性group
。