如何使用 Javascript 访问命名的 JSON 数组

How to access named JSON array with Javascript

提问人:Roy Hinkley 提问时间:2/1/2023 更新时间:2/1/2023 访问量:43

问:

我正在从 API 获取一个 JSON 数组。返回的数据将写入控制台:

console.log(` data [${data}] `);

打印:

{
    "aaData": [
        {                
            "create_date": "1/30/2023 07:43 AM",
            "description": "0800",
            "override_user_id": -1,
            "type": 1,
            "user_id": 32,
            "user_type": 0
        },
        {                
            "create_date": "1/30/2023 09:43 AM",
            "description": "1000",                
            "override_user_id": -1,                
            "type": 1,
            "user_id": 32,
            "user_type": 0
        },
        {                
            "create_date": "1/30/2023 11:43 AM",
            "description": "1200",                
            "override_user_id": -1,                
            "type": 1,
            "user_id": 32,
            "user_type": 0
        },
        {                
            "create_date": "1/30/2023 01:43 PM",
            "description": "1400",                
            "override_user_id": -1,
            "type": 1,
            "user_id": 32,
            "user_type": 0
        }
    ]
}

我所期待的。但是如果我检查长度(预期长度为 4)

console.log(`data [${data.length}] `);

我得到:

data [607]

这对我来说没有意义。此外,如果我将命名数组写入控制台

console.log(` data [${data.aaData}] `);

我得到:

data [undefined]

而且,如果我尝试访问数组中对象的属性,则每个对象都未定义。

控制台.log(description = [${data.aaData[i].description}]);

我得到

description = [undefined]

data是从 JQuery ajax 调用返回的变量

success: function (data) {
...

假设它直接打印到控制台,而不必打印到控制台,则返回的数据应该是 json 对象的字符串版本。但是,如果我申请stringfy

console.log(` data[${JSON.parse(data)}] `);

显示

data [undefined]

我在这里有什么不明白的?

jQuery JSON AJAX 解析

评论


答:

0赞 ruleboy21 2/1/2023 #1

看起来是一个 so 将返回字符串的长度,在您的情况下为 607。若要将数据转换为 JSON,请添加到选项中,如下所示:datastringdata.lengthdataType: 'json'$.ajax()

$.ajax({
    ...
    dataType: 'json',
    success: function (data) {
        console.log(data)
    }
});