如何用d3中的对象打开json文件?

时间:2016-05-24 11:51:42

标签: javascript json d3.js

我想为d3世界地图(基于:http://datamaps.github.io/)和d3条形图(基于:https://bl.ocks.org/mbostock/3885304)加载一个json文件。

我的JSON看起来像这样:

{
"CHE":  {"costOfLivingIndex": "123.10", "propertyPriceToIncomeRatio": "123.10", "qualityOfLifeIndex": "208.54", "name": "Switzerland", "purchasingPower": "178.74", "pollutionIndex": "28.73", "trafficCommuteTimeIndex": "8.57", "health Care Index": "68.88", "climateIndex": "23.02", "safetyIndex": "74.27"},
"DNK":  {"costOfLivingIndex": "84.88", "propertyPriceToIncomeRatio": "84.88", "qualityOfLifeIndex": "206.49", "name": "Denmark", "purchasingPower": "142.14", "pollutionIndex": "25.64", "trafficCommuteTimeIndex": "5.85", "health Care Index": "81.89", "climateIndex": "29.93", "safetyIndex": "74.33"}
etc...
}

我选择这张d3世界地图。但是,我想知道如何迭代对象的属性。如果我这样做:

console.log(data.DNK.name);

我得到了名字,但如何获得包含所有名称(或其他值)的列表?

2 个答案:

答案 0 :(得分:0)

我们可以做类似的事情:

for (var key in data) {
    alert(key + " -> " + data[key]);
}

您应该能够通过数据[key]

获取其他参数

答案 1 :(得分:0)

因为它已经是JSON对象,所以你可以在不使用JSON.parse的情况下循环它,如果它是字符串或者某些东西你将使用它。

for(var key in data){
  console.log(key); 
    for(var k in data[key]){
      console.log(k,data[key][k]);
    }
}