You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从指定JSON中获取id与Status值?现有代码返回undefined

JSON深层字段取值返回undefined的原因与解决方法

问题原因

你写的代码直接从解析后的根对象parsedData中读取id和Status,但这两个字段并不在根节点,而是嵌套在多层结构里:

  • id位于SNGS → Defect数组的第1个元素 → $ 对象中
  • Status对应的值位于SNGS → Defect数组的第1个元素 → Field数组中name为"Status"的元素 → _ 属性中

根对象parsedData本身只有SNGS一个属性,直接访问parsedData.id和parsedData.Status自然找不到对应值,所以返回undefined。

解决代码

const data='{"SNGS":{"$":{"xmlns":"csng","xmlns:ns2":"http://www.w3.org/1999/xlink"},"Defect":[{"$":{"id":"DCV19294","ns2:href":"https://mywebsite.com/api/beta//bug/DCSV19294"},"Field":[{"_":"4","$":{"name":"Severity"}},{"_":"N","$":{"name":"Status"}}]}]}}'

const parsedData = JSON.parse(data);

// 获取id值
const defectId = parsedData.SNGS.Defect[0].$.id;
console.log(defectId); // 输出 DCV19294

// 获取Status值(用find方法定位目标Field元素)
const statusField = parsedData.SNGS.Defect[0].Field.find(item => item.$.name === 'Status');
const statusValue = statusField?._; // 可选链避免找不到时报错
console.log(statusValue); // 输出 N

补充说明

如果Defect或Field数组可能有多个元素,或者需要处理空数组的情况,建议加上判空逻辑,比如用可选链操作符?.或者条件判断,避免出现Cannot read properties of undefined的错误。

内容的提问来源于stack exchange,提问作者steveS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:53:25