如何使用D3 javascript迭代JSON文件中的数据

时间:2013-11-15 15:51:58

标签: javascript jquery json d3.js

我正在尝试迭代并使用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。非常感激您的帮忙。

2 个答案:

答案 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