Javascript 将JSON数据从API转换为有用的格式?
我有一个API,它以以下格式返回指标数据:Javascript 将JSON数据从API转换为有用的格式?,javascript,json,Javascript,Json,我有一个API,它以以下格式返回指标数据: [ { "concept": "population", "year": 2012, "value": 9.5, "country-name": "Sweden", }, { "concept": "education", "year": 2012, "value
[
{
"concept": "population",
"year": 2012,
"value": 9.5,
"country-name": "Sweden",
},
{
"concept": "education",
"year": 2012,
"value": 12,
"country-name": "Sweden",
},
{
"concept": "population",
"year": 2012,
"value": 5,
"country-name": "Norway",
},
{
"concept": "eduction",
"year": 2012,
"value": 12,
"country-name": "Norway",
}
]
基于此,我通常需要按国家和年份对其进行分组,以获得如下结果:
var data = [
{id : Sweden, population : 9.5, education: 12},
{id : Norway, population : 5, education: 12},
]
或者仅按国家和年份值作为数组:
var data = [
{id : Sweden, values : [ { year : 2012, population : 9.5, education: 12 }, {...} ]},
{id : Norway, values : [ { year : 2012, population : 5, education: 12 }, {...} ]},
]
var data = {};
indicatordata.forEach(function(item){
var country = item['country-name'];
var year = item.year;
data[country] = data[country] || {id: item['country-name'], values: {}};
var values = data[country].values;
values[year] = values[year] || {};
values[year][item.concept] = item.value;
});
var rawData=[
{
“概念”:“人口”,
“年份”:2012年,
“价值”:9.5,
“国家名称”:“瑞典”,
},
{
“概念”:“教育”,
“年份”:2012年,
“价值”:12,
“国家名称”:“瑞典”,
},
{
“概念”:“人口”,
“年份”:2012年,
“价值”:5,
“国家名称”:“挪威”,
},
{
“概念”:“教育”,
“年份”:2012年,
“价值”:12,
“国家名称”:“挪威”,
}
];
var data=d3.nest()
.键(功能(d)
{
返回d[‘年’];
})
.键(功能(d)
{
返回d['country-name'];
})
.汇总(功能(组)
{
返回组。减少(函数(结果,d)
{
结果[d['concept']=d['value'];
返回结果;
}, {});
})
.条目(原始数据);
控制台日志(数据)代码>
你可以自己做,只需迭代并创建你需要的任何东西,比如
var data = [];
json.forEach(function(item) {
var country = item['country-name'],
match = false,
obj = {}
data.forEach(function(dataItem, i) {
if (dataItem.id === country) {
match = true;
obj = data[i];
}
});
obj.id = country;
obj[item.concept] = item.value;
if (!match) data.push(obj)
});
您可能会发现对象比数组更容易使用:
var data = [
{id : Sweden, values : [ { year : 2012, population : 9.5, education: 12 }, {...} ]},
{id : Norway, values : [ { year : 2012, population : 5, education: 12 }, {...} ]},
]
var data = {};
indicatordata.forEach(function(item){
var country = item['country-name'];
var year = item.year;
data[country] = data[country] || {id: item['country-name'], values: {}};
var values = data[country].values;
values[year] = values[year] || {};
values[year][item.concept] = item.value;
});
不清楚如何从原始数组中获得结果。OP需要做的事情太简单,不能使用外部library@NicholasKyriakides“什么JS库可以帮助管理这些常见的数据转换”怎么样?是瞎了眼还是没看完这篇文章?也许,对不起