我有一个来自API的响应,其中JSON不在数组中,如下所示
{
"TV": {
"USD": 9677.25,
"EUR": 7768.87,
"JPY": 1072773.87,
"GBP": 6898.93,
"AUD": 12294.15,
"CAD": 12056.19
},
"Lamp": {
"USD": 231.35,
"EUR": 185.89,
"JPY": 25735.85,
"GBP": 168.82,
"AUD": 296.7,
"CAD": 283
}
}如果是数组,我可以使用.map函数,但是在这个场景中,如何在循环数据的同时显示数据,因为来自API的数据在每次调用中都可能有所不同。
我想要的格式是
[{
"PRODUCT": "TV",
"PRICE": {
"USD": 9677.25,
"EUR": 7768.87,
"JPY": 1072773.87,
"GBP": 6898.93,
"AUD": 12294.15,
"CAD": 12056.19
}
}, {
"PRODUCT": "Lamp",
"PRICE": {
"USD": 231.35,
"EUR": 185.89,
"JPY": 25735.85,
"GBP": 168.82,
"AUD": 296.7,
"CAD": 283
}
}]请帮忙..。
发布于 2018-02-15 06:33:46
您可以使用Object.keys()迭代数据的每个键,然后使用array#map,可以使用对象创建结果数组。
var data = { "TV": { "USD": 9677.25, "EUR": 7768.87, "JPY": 1072773.87, "GBP": 6898.93, "AUD": 12294.15, "CAD": 12056.19 }, "Lamp": { "USD": 231.35, "EUR": 185.89, "JPY": 25735.85, "GBP": 168.82, "AUD": 296.7, "CAD": 283 } },
result = Object.keys(data).map(k => ({PRODUCT: k, PRICE: data[k]}));
console.log(result);
发布于 2018-02-15 04:35:28
您可以检索JSON对象顶级属性的键。
var payload = {
"TV": {
"USD": 9677.25,
"EUR": 7768.87,
"JPY": 1072773.87,
"GBP": 6898.93,
"AUD": 12294.15,
"CAD": 12056.19
},
"Lamp": {
"USD": 231.35,
"EUR": 185.89,
"JPY": 25735.85,
"GBP": 168.82,
"AUD": 296.7,
"CAD": 283
}
}
var keys = Object.keys(payload)现在,您可以映射这些键,并使用它们来引用有效负载。因此,例如,如果您想要创建一个包含每个项目的美元成本的数组。
var usdCost = keys.map(function (key) {
return {
item: key,
usd: payload[key].USD
}
})
// [{
// item: "TV",
// usd: 9677.25
// }, {
// item: "Lamp",
// usd: 231.35
// }]https://stackoverflow.com/questions/48799937
复制相似问题