[英]Re-format JSON in Javascript
嘗試重新格式化API查詢的響應,但是遇到了問題。 嘗試過地圖,但是沒有用。
main.data.daily(symbol, 'main', 'json').then(data=> ....);
當前響應格式:
'data':{
'2018-03-13':
{ '1. open': '32.8500',
'2. high': '33.3600',
'3. low': '32.8500',
'4. close': '33.1400',
'5. volume': '834894'
},
...
}
這是所需的格式:
[{
date: '2018-03-13'
open: 32.85,
high: 33.36,
low: 33.85,
close: 33.14,
volume: 855448
},
...
]
嘗試了以下但沒有雪茄:
data.map(val, i, data => {
return {
date: i,
open: val['1. open'],
high: val['2. high'],
low: val['3. low'],
close: val['4. close'],
volume: val['5. volume']
}
});
var data = { '2018-03-13': { '1. open': '32.8500', '2. high': '33.3600', '3. low': '32.8500', '4. close': '33.1400', '5. volume': '834894' }, } data = data.map(val, i, data => { return { date: i, open: val['1. open'], high: val['2. high'], low: val['3. low'], close: val['4. close'], volume: val['5. volume'] } }); console.log(data)
您可以使用Object.entries
和Object.assign
重新格式化對象。 為了獲得沒有前導數字和點的新密鑰,您可以使用正則表達式,將想要的部分分隔為新密鑰。
var data = { '2018-03-13': { '1. open': '32.8500', '2. high': '33.3600', '3. low': '32.8500', '4. close': '33.1400', '5. volume': '834894' }, '2018-03-12': { '1. open': '32.3900', '2. high': '32.8050', '3. low': '32.2800', '4. close': '32.6800', '5. volume': '855448' } }, result = Object .entries(data) .map(([date, object]) => Object.assign( { date }, ...Object.entries(object).map(([k, v]) => ({ [k.match(/\\w+$/)]: +v }))) ); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.