如何解决如何在Javascript中提取嵌套对象中的复杂元素
返回一个复杂的 JSON,我正在尝试访问嵌套在对象中的元素。这是 JSON:
{
"Meta Data": {
"1. information": "Daily Time Series with Splits and Dividend Events","2. Symbol": "MSFT","3. Last Refreshed": "2021-02-12","4. Output Size": "Full size","5. Time Zone": "US/Eastern"
},"Time Series (Daily)": {
"2021-02-12": {
"1. open": "243.9332","2. high": "245.3","3. low": "242.73","4. close": "244.99","5. adjusted close": "244.99","6. volume": "16561079","7. dividend amount": "0.0000","8. split coefficient": "1.0"
},"2021-02-11": {
"1. open": "244.78","2. high": "245.15","3. low": "242.15","4. close": "244.49","5. adjusted close": "244.49","6. volume": "15751059","2021-02-10": {
"1. open": "245.0","2. high": "245.92","3. low": "240.89","4. close": "242.82","5. adjusted close": "242.82","6. volume": "22117240",
我见过使用 Object.但没有人为我工作。我认为这是因为日期的键都是唯一的,或者格式不正确。
const fetchData = async (e) => {
fetch(requestUrl)
.then(response => response.json())
.then(data => {
Object.keys(data['Time Series (Daily)']).forEach(key => {
let value = data['Time Series (Daily)'][key]["5. adjusted close"];
data_raw.push(value)
});
setData(data)
})
.catch(e => {
setError("Fuckit")
});
};
我可以直接访问对象,但似乎无法将数据提取到数组中。
直接调用有效但数组无效
<>
<h2>Ticker Data is: </h2>
<ul>Quote: {mydata['Meta Data']['2. Symbol']} </ul>
<ul>Data Series: {mydata['Time Series (Daily)']["2021-02-12"]["5. adjusted close"]}</ul>
<ul>All Data is: {close_data}</ul>
<section>
<h2>Error Data is: </h2>
<p>{err}</p>
<button onClick={fetchData}>
Click it
</button>
</section>
</>
);
解决方法
如果您正在寻找“close_data”,您的代码是正确的,您可以运行并检查以下代码段输出:
const data = {
"Meta Data": {
"1. Information": "Daily Time Series with Splits and Dividend Events","2. Symbol": "MSFT","3. Last Refreshed": "2021-02-12","4. Output Size": "Full size","5. Time Zone": "US/Eastern"
},"Time Series (Daily)": {
"2021-02-12": {
"1. open": "243.9332","2. high": "245.3","3. low": "242.73","4. close": "244.99","5. adjusted close": "244.99","6. volume": "16561079","7. dividend amount": "0.0000","8. split coefficient": "1.0"
},"2021-02-11": {
"1. open": "244.78","2. high": "245.15","3. low": "242.15","4. close": "244.49","5. adjusted close": "244.49","6. volume": "15751059","2021-02-10": {
"1. open": "245.0","2. high": "245.92","3. low": "240.89","4. close": "242.82","5. adjusted close": "242.82","6. volume": "22117240","8. split coefficient": "1.0"
}
}
}
const close_data = []
Object.keys(data['Time Series (Daily)']).forEach((dateKey) => {
const value = data['Time Series (Daily)'][dateKey]
close_data.push(value['5. adjusted close'])
})
console.log(close_data)
以下代码对我有用。
const fetchData = () => {
fetch(requestUrl)
.then(response => response.json())
.then(data => {
Object.keys(data['Time Series (Daily)']).forEach((dateKey) => {
last_close.push(data['Time Series (Daily)'][dateKey]['5. adjusted close'])
})
Object.keys(data['Meta Data']).forEach((metaKey) => {
metadata.push(data['Meta Data'][metaKey])
})
setClosingData(last_close)
setMetaData(metadata)
})
.catch(e => {
setError("grr")
});
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。