访问json元素会产生未定义的错误

时间:2017-02-25 12:39:47

标签: javascript json object

我有以下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'未定义的

为什么会这样?欢迎任何提示或建议!

2 个答案:

答案 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属性。

<强>样本

&#13;
&#13;
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;
&#13;
&#13;