如何解构嵌套对象?从POST请求响应中提取ObjectID
解决嵌套对象的解构问题
你遇到的问题很典型——因为没匹配到数据的嵌套层级,直接从res.data里解构ObjectID肯定拿不到值。先明确你的数据结构:
从POST请求获取到的response.data:
{ d: { results: { __metadata: [Object], ObjectID: '00163E6CDDFC1EEA96C57123A5C6DDE5', InformationLifeCycleStatusCode: 'AC', ID: '9000001424' } } }
可以看到ObjectID藏在res.data.d.results的层级里,得逐层解构才能拿到它,这里给你两种可行方案:
方案一:一次性多层解构
直接用嵌套解构语法一步到位,完全匹配数据层级:
const { d: { results: { ObjectID: objectID } } } = res.data;
拆解一下逻辑:
- 从
res.data中取出d对象 - 从
d中取出results对象 - 从
results中取出ObjectID,并将其重命名为objectID(如果想保留原变量名,直接写ObjectID即可)
方案二:分步解构(更易读)
如果觉得多层解构看起来复杂,拆成几步会更直观,也方便调试:
// 第一步:拿到最外层的d对象 const { d } = res.data; // 第二步:从d里取出results对象 const { results } = d; // 第三步:从results里提取ObjectID const { ObjectID: objectID } = results;
验证效果
用模拟数据测试第一种方案,看看结果:
const res = { data: { d: { results: { __metadata: {}, ObjectID: '00163E6CDDFC1EEA96C57123A5C6DDE5', InformationLifeCycleStatusCode: 'AC', ID: '9000001424' } } } }; const { d: { results: { ObjectID: objectID } } } = res.data; console.log(objectID); // 输出:00163E6CDDFC1EEA96C57123A5C6DDE5
核心就是解构的层级必须和数据的嵌套结构完全对应,不能跳过中间的d和results层直接提取ObjectID哦~
内容的提问来源于stack exchange,提问作者user5228754
相关产品推荐
相关产品推荐

