我有以下JSON数组:
[{
"eurusd": {
"at": 1410438338,
"ticker": {
"buy": "1.123",
"sell": "1.123",
"low": "1.123",
"high": "1.123",
"last": "1.123",
"vol": "1.123",
"change": "1.123",
"change_trend": "up"
}
},
"eurgbp": {
"at": 1410438338,
"ticker": {
"buy": "1.123",
"sell": "1.123",
"low": "1.123",
"high": "1.123",
"last": "1.123",
"vol": "1.123",
"change": "1.123",
"change_trend": "down"
}
}
}]
需要以下列格式提供:
[{
"market": "eurusd",
"currency": "usd",
"volume": "1.123",
"change": "1.123",
"last": "1.123",
"high": "1.123",
"low": "1.123"
}, {
"market": "eurgbp",
"currency": "gbp",
"volume": "1.123",
"change": "1.123",
"last": "1.123",
"high": "1.123",
"low": "1.123"
}]
我知道扁平化的方法,但有一件重要的事情我无法开展工作:
1)货币不是原始数组的一部分。我需要将其从密钥名称中分割出来
到目前为止,我能够完全展平原始阵列,但我没有运气遗漏某些值(例如买/卖)以及将“货币”值添加到新阵列。
答案 0 :(得分:0)
看起来你并没有太多想要扁平化这个对象,只需提取ticker
值并将市场信息添加到各个项目中。为此,我认为你需要一种临时方法:
var items = [],
cur,
ticker,
item;
for (var cur in data[0]) {
ticker = data[0][cur].ticker;
item = {};
["change", "last", "high", "low"].forEach(function (key) {
item[key] = ticker[key];
});
item.volume = ticker.vol;
item.market = cur;
item.currency = cur.substring(3);
items.push(item);
}