如何从指定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
相关产品推荐
相关产品推荐

