Javascript 访问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": [ {

我有以下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”


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

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
允许您在这些字符串和对象形式之间进行转换。但他不尝试访问
中的任何内容。