如何访问 JSON 对象中的数组?

Posted

技术标签:

【中文标题】如何访问 JSON 对象中的数组?【英文标题】:How to access an array in a JSON object? 【发布时间】:2011-07-07 14:43:03 【问题描述】:

我有以下 JSON 对象:

[
    
        "comments": [
            
                "created_at": "2011-02-09T14:42:42-08:00",
                "thumb": "xxxxxxx",
                "level": 1,
                "id": 214,
                "user_id": 41,
                "parent_id": 213,
                "content": "<p>xxxxxx</p>",
                "full_name": "xx K"
            ,
            
                "created_at": "2011-02-09T14:41:23-08:00",
                "thumb": "xxxxxxxxxxxxx",
                "level": 0,
                "id": 213,
                "user_id": 19,
                "parent_id": null,
                "content": "<p>this is another test</p>",
                "full_name": "asd asd asd asd asd"
            
        ],
        "eee1": "asdadsdas",
        "eee2": "bbbbb"
    
]

这是来自$.ajax 请求,我成功了......

success: function (dataJS) 
    console.log(dataJS);
    console.log(dataJS[eee1]);
    console.log(dataJS.comments);

问题是我无法访问 JSON 对象中的项目,即使 dataJS 确实在控制台中正确显示。想法?

【问题讨论】:

console.log(dataJS.cmets[0]); ? 你检查过响应头的Content-Type真的是application/json吗? @Anapprentice 你能用正确的答案回复帖子吗? 【参考方案1】:

那是因为你的基础对象也是一个数组。

console.log(dataJS[0].comments[0]);

我怀疑这会起作用

【讨论】:

【参考方案2】:

您返回的 JSON 实际上是一个数组本身,所以...

dataJS[0].comments[0].created_at

将是2011-02-09T14:42:42-08:00,等等...

dataJScomments 都是数组,需要索引来访问相应的元素。

【讨论】:

不,它不是根据规范构建的,所以不,它不是“不正确”,但是您想使用什么语法来访问它? 好的,这就是我需要知道的。谢谢!一旦 *** 让我...【参考方案3】:

返回的对象本身就是一个数组,因此要获得第一条评论(例如),您可以通过以下方式访问它:

dataJS[0].comments[0]

【讨论】:

【参考方案4】:
console.log(dataJS);
console.log(dataJS[0].eee1);
console.log(dataJS[0].comments[0]);

【讨论】:

【参考方案5】:

做这样的事情:-

var dataJS = ["comments":["created_at":"2011-02-09T14:42:42-08:00","thumb":"xxxxxxx","level":1,"id":214,"user_id":41,"parent_id":213,"content":"<p>xxxxxx</p>","full_name":"xx K","created_at":"2011-02-09T14:41:23-08:00","thumb":"xxxxxxxxxxxxx","level":0,"id":213,"user_id":19,"parent_id":null,"content":"<p>this is another test</p>","full_name":"asd asd asd asd asd"],"eee1":"asdadsdas","eee2":"bbbbb"];

var created_at = dataJS[0].comments[0].created_at;

【讨论】:

【参考方案6】:

是的,正如其他人所说,JSON 实际上是一个数组(单个对象)。所以你需要引用一个索引。

有趣的是(对我来说),您的结果字符串确实成功验证为 JSON。到目前为止,我一直认为,要成为有效的 JSON,它必须是一个对象(即 )。

【讨论】:

【参考方案7】:

您必须将 ajax 请求中的 dataType 称为“JSON”。让用户像下面那样做。

 $.ajax(
            url: $('#frmAddCourse').attr('action'),
            type: 'POST',
            data: $('#frmAddCourse').serialize(),
            dataType: 'JSON',
            success: function (data)
                Materialize.toast(data['state'],2000);
            ,
            error:function()
                Materialize.toast(errorMessage,2000);
            
        );

【讨论】:

【参考方案8】:

JSON 必须使用eval 函数进行解释(经过明显的清理,请参阅 eval 的安全注意事项)。你确定你的框架能帮到你吗?

【讨论】:

是的,jQuery 评估 JSON。 $.ajax和jquery标签暗示 我猜$.ajax可以是任何框架,就像大多数人普遍使用的$.ajax是一个非常基本的组合,所以不清楚。 @Brian:大多数时候我同意,但是没有它的解析只是浪费资源。 - 而且服务器是可信来源,无论如何你的 JS 代码都来自那里。 @Brian:json2 库使用eval。 github.com/douglascrockford/JSON-js/blob/master/json2.js#L466

以上是关于如何访问 JSON 对象中的数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用角度访问 HTML 中的 JSON 数组对象?

如何访问 PHP 中的 JSON 元素,如数组对象?

如何迭代由json对象中的键访问的数组[重复]

访问 JSON 数组中的对象 (JavaScript) [重复]

如何在 kotlin Android 中访问更大的 jsonArray json 中的 json 数组中的字符串

如何访问json数组中的值