簡體   English   中英

用Java格式重新格式化JSON

[英]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.entriesObject.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM