Javascript 访问json元素会产生未定义的错误
我有以下JSON:Javascript 访问json元素会产生未定义的错误,javascript,json,object,Javascript,Json,Object,我有以下JSON: { "list": { "q": "raw", "sr": "28", "ds": "Standard Reference", "start": 0, "end": 1, "total": 1391, "group": "", "sort": "n", "item": [ {
{
"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”
为什么会这样?欢迎任何提示或建议 JSON是否以字符串形式存储在变量中?尝试:
console.log(JSON.parse(result).list.ds)
我询问的原因是,文本
uncaughttypeerror:cannotreadproperty'ds'of undefined
告诉我您的result
变量没有list
属性,如果它是一个对象,JSON显然会有这个属性,但是,如果您不小心忘记解析JSON字符串,则肯定不会这样做。您的JSON
是有效的,并且如果您正在访问list
对象中的ds
属性。语法console.log(result.list.ds)代码>是正确的
但是,如果您试图访问项
数组中的ds
属性,则必须迭代该数组以获取ds
属性
演示
var结果={
“名单”:{
“q”:“原始”,
“sr”:“28”,
“ds”:“标准参考”,
“开始”:0,
"完":一,,
“总数”:1391,
“集团”:“,
“排序”:“n”,
“项目”:[{
“偏移量”:0,
“集团”:“家禽产品”,
“名称”:“鸡肉、肉仔鸡或雏鸡、深色肉、大腿、仅肉、生的”,
“ndbno”:“05096”,
“ds”:“SR”
}]
}
};
var res=result.list.item.map(函数(elem){
返回元素ds;
})
控制台日志(res)代码>它正在工作。result.list.ds正在获取标准引用是的,这起作用了:D,我可以问一下JSON.parse到底做什么吗?JSON.parse
获取一个JSON格式的文本字符串(想想var string='{“key”:“value”}
)并将其转换成一堆嵌套的JS对象(想想var object={key:“value”}
)。外部引用的差异至关重要<在这种情况下,code>typeof string
将返回'string'
,而typeof object
将返回'object'
,这意味着object
具有属性,而string
仅具有一个字符数组JSON.parse
和JSON.stringify
允许您在这些字符串和对象形式之间进行转换。但他不尝试访问项
中的任何内容。