我正在调用 AlphaVantage API,它会给出以下 JSON 响应:
{
"Meta Data": {
"1. Information": "Intraday (5min) open, high, low, close prices and volume",
"2. Symbol": "IBM",
"3. Last Refreshed": "2024-04-19 19:55:00",
"4. Interval": "5min",
"5. Output Size": "Compact",
"6. Time Zone": "US/Eastern"
},
"Time Series (5min)": {
"2024-04-19 19:55:00": {
"1. open": "181.5200",
"2. high": "181.5800",
"3. low": "181.4600",
"4. close": "181.5100",
"5. volume": "158"
},
"2024-04-19 19:40:00": {
"1. open": "181.2000",
"2. high": "181.2000",
"3. low": "181.2000",
"4. close": "181.2000",
"5. volume": "27"
},
"2024-04-19 19:30:00": {
"1. open": "181.5600",
"2. high": "181.5600",
"3. low": "181.5600",
"4. close": "181.5600",
"5. volume": "20"
},
"2024-04-19 19:25:00": {
"1. open": "181.5600",
"2. high": "181.5600",
"3. low": "181.5600",
"4. close": "181.5600",
"5. volume": "1"
},...
}
}
我正在尝试使用接口提取数据并将其存储在对象中:
type IntradayInterface = {
metaData: MetaData;
interval: { [time: string]: IntervalData };
}
export type MetaData = {
information: string;
symbol: string;
lastRefreshed: Date;
interval: string;
outputSize: string;
timeZone: string;
}
export type IntervalData = {
open: string;
high: string;
low: string;
close: string;
volume: string;
}
export default IntradayInterface;
这是我的解析器函数:
function parseIntradayData(jsonData: any) : IntradayInterface {
const metaData = jsonData['Meta Data'];
let parsedMetaData : MetaData = {
information: metaData['1. Information'],
symbol: metaData['2. Symbol'],
lastRefreshed: metaData['3. Last Refreshed'],
interval: metaData['4. Interval'],
outputSize: metaData['5. Output Size'],
timeZone: metaData['6. Time Zone']
};
const intervalData = jsonData['Time Series (5min)'];
let parsedIntervalData: IntervalData = {
open: intervalData['1. open'],
high: intervalData['2. high'],
low: intervalData['3. low'],
close: intervalData['4. close'],
volume: intervalData['5. volume']
}
const returnData: IntradayInterface = {
metaData: parsedMetaData,
interval: intervalData
}
return returnData;
}
export default parseIntradayData;
目标是从 JSON 响应中提取数据并将其存储在类型的对象中IntradayInterface
,但当我尝试时,该对象未正确填充。我有两个假设:
1 - 我的界面设置不正确,特别是interval
定义。我希望能够存储映射到的每个日期时间,IntervalData
但我不知道如何
2 - 我没有正确解析 JSON 的间隔“(Time Series 5min)”部分
任何对此的帮助将不胜感激!
"Time Series (5min)"
输入数据中的对象有一些嵌套对象,您也想对其进行转换。所以你必须迭代所有这些Object.entries
将对象转换为[key,value]
对的数组。然后您可以迭代该数组来转换您的值。最后,Object.fromEntries
将结果对转换[key,value]
回对象。看看
IntervalData
你的映射可能会让事情变得更简单因为属性名称的映射只是通过从属性名称中删除
1.
, ... 来完成。2.
但 as 并Object.fromEntries
不能推断出任何类型类似的事情也可以用该对象完成
MetaData
。