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

时间:2011-03-02 21:17:40

标签: javascript jquery arrays json object

您好我有以下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确实在控制台中正确显示。想法?

由于

8 个答案:

答案 0 :(得分:13)

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

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

我怀疑这会起作用

答案 1 :(得分:5)

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

dataJS[0].comments[0].created_at

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

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

答案 2 :(得分:3)

返回的对象本身就是一个数组,所以要获得第一个注释(作为示例),这是您访问它的方式:

dataJS[0].comments[0]

答案 3 :(得分:3)

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

答案 4 :(得分:1)

做这样的事情: -

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;

答案 5 :(得分:1)

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

有趣的是(对我而言),您的结果字符串确实成功验证为JSON。我一直认为,要成为有效的JSON,它必须是一个Object(即{})。

答案 6 :(得分:0)

您必须将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);
            }
        });

答案 7 :(得分:-2)

JSON必须使用eval函数进行解释(在明显的清理之后,请参阅eval的安全性考虑因素)。你确定你的框架为你做了吗?