我有以下JSON:
{
"list": {
"q": "raw",
"sr": "28",
"ds": "Standard Reference",
"start": 0,
"end": 1,
"total": 1391,
"group": "",
"sort": "n",
"item": [
{
"offset": 0,
"group": "Poultry Products",
"name": "Chicken, broilers or fryers, dark meat, thigh, meat only, raw",
"ndbno": "05096",
"ds": "SR"
}
]
}
}
但是当我尝试访问此json中的元素时,我一直收到未定义的错误...我已经检查过JSON是否有效,是的,json是有效的! 也许我正在访问JSON错误? JSON存储在名为result的变量中。这就是我到目前为止的尝试:
console.log(result.list.ds);
我也尝试过:
console.log(result["0"].list.ds);
但两种解决方案都给我以下错误:
未捕获的TypeError:无法读取属性' ds'未定义的
为什么会这样?欢迎任何提示或建议!
答案 0 :(得分:2)
您的JSON是否作为字符串存储在变量中?尝试:
console.log(JSON.parse(result).list.ds)
我问的原因是文字Uncaught TypeError: Cannot read property 'ds' of undefined
告诉我你的result
变量没有list
属性,如果它是一个对象,你的JSON显然会这样做,但它如果你不小心忘记解析你的JSON字符串,那肯定不会。
答案 1 :(得分:0)
如果您要访问JSON
对象中的ds
属性,则list
有效。您的语法console.log(result.list.ds);
是正确的。
但是,如果您尝试访问ds
数组中的item
属性,则必须迭代数组以获取ds
属性。
<强>样本强>
var result = {
"list": {
"q": "raw",
"sr": "28",
"ds": "Standard Reference",
"start": 0,
"end": 1,
"total": 1391,
"group": "",
"sort": "n",
"item": [{
"offset": 0,
"group": "Poultry Products",
"name": "Chicken, broilers or fryers, dark meat, thigh, meat only, raw",
"ndbno": "05096",
"ds": "SR"
}]
}
};
var res = result.list.item.map(function(elem) {
return elem.ds;
})
console.log(res);
&#13;