2014-11-06 129 views
0

我没有任何json和d3知识(刚开始阅读几个小时后),但具有非常基本的JavaScript知识。我必须加载一个json文件并使用d3在控制台上打印所有数组和对象。我想知道是否有人能帮我解决这个问题。其实,我做到了,但不工作:( 我的JSON文件。如何在javascript中加载和打印json数组/对象

{ 
    "addressfile": "info", 
     "struct": { 
      "address": [ 
       [ 
        "A", 
        "B", 
       ], 
       [ 
        "B", 
        "C", 
       ], 
     ], 

      "address1": { 
      "address2": { 
      "address3": { 
        "zip": [ 
         "NUMBER", 
         0 
        ] 
        }, 
      "address_type": "Home" 
      }, 
     } 
    }, 
    "COUNTRY": {}, 
    } 

我的javascript代码...

<!DOCTYPE html> 
<meta charset="utf-8"> 
<style> 
<body> 
<script> 
//LOADING JSON FILE 
d3.json("address.json", function(error, root) { 
     if (error) return console.error(error); 
      for (var p in location) if (location.hasOwnProperty(p)) { 
       console.log(p + " : " + location[p]); 
      } 
     } 
</script> 
</body> 
</html> 

请帮我解决这个问题...

+1

应该说是'location',而不是'root'作为第二个参数回调? – 2014-11-06 15:12:55

回答

0

尝试

d3.json("appinfo.json", function(location) { 

我知道文档说回调有两个参数,一个项目,我最近与D3已经做rsion 3.4.13,回调函数只会工作,如果我只传递给它的数据参数。

+0

感谢您的答复..我也这样做,但没有工作....没有输出 – Kal 2014-11-06 16:36:43

0

你的代码缺少一个右括号 - );

正确的代码是:

<script> 
    d3.json("appinfo.json", function(error, root) { 
     if (error) return console.error(error); 

      console.log(root) // output -your JSON data as pojo 

      //for (var p in location) if (location.hasOwnProperty(p)) { 
      //  console.log(p + " : " + location[p]); 
      //} 
    }); 
</script> 
  • 确保你写正确的URL到您的JSON文件中的第一个参数d3.json()。
  • 确保appinfo.json包含正确的JSON对象,你可以在http://jsonlint.com/
+0

感谢您的答复和修​​复:D,但它仍然无法正常工作。 JSON的路径是正确的(我也硬编码它)和格式是一个有效的JSON文件..任何其他的想法:(.... – Kal 2014-11-07 09:25:26

+0

是否有任何错误在控制台? – 2014-11-07 09:31:54

+0

是的..我在控制台得到这个.. 。对一个对象的[[Prototype]]进行变异将导致你的代码运行速度非常缓慢;相反,使用Object.create Object {sourcefile:“Script”,structure:Object创建具有正确初始[[Prototype]]值的对象,组件:Object,node_mapping:Object} 不推荐使用getPreventDefault(),使用defaultPrevented代替 – Kal 2014-11-07 09:38:53

0

谢谢大家测试一下..我挣扎得到解决后.. 解决方案:外部JSON文件不被浏览器支持所以我需要使用网络服务器。然后我可以在控制台中看到它的输出。 最终代码:

<!DOCTYPE html> 
<meta charset="utf-8"> 
<head> 
    <script src="http://d3js.org/d3.v3.min.js"></script> 
</head> 
<body> 
    <script> 
     d3.json("address.json", function(location) { 
     console.log(location) 
    }); 
    </script> 
</body> 
</html> 

希望它可以帮助别人不喜欢我小时分解决.....