3
[
    [
        {
            "Id": 3,
            "Code": "232",
            "TicketImage": "0"
        }
    ],
    [
        {
            "Id": 1,
            "Code": "23",
            "TicketImage": "1"
        },
        {
            "Id": 2,
            "Code": "24",
            "TicketImage": "1"
        }
    ],
    []
]

我有这个我试图解析的 JSON 对象。

var res = jQuery.parseJSON(JSON.stringify(obj.Message));

              $.each(res, function (i, tickets) {
                  $.each(tickets, function (i, ticket) {
                      console.log($(this));
                  });
              });

当我尝试这个时,我会收到无数带有字母的弹出窗口。但我想要对象。

我如何解析这个 JSON 数据?

更新:

           $.each(res, function (i, tickets) {
                  $.each(tickets, function (i, ticket) { 
                      console.log(ticket.Code);
                      console.log(ticket.TicketImage);
                  });
              });

这做到了。

4

2 回答 2

2

小心你覆盖 i 变量:

$.each(res, function (i, tickets) {
                  $.each(tickets, function (j, ticket) {
                      console.log(this);
                      // as a full string
                      console.log(this.ticketId+' : '+JSON.stringify(this));

                  });
});

除了这个小东西,你的循环是正确的,你不需要你的'this'上的jquery包装器。在 $.each(array,function(k,v){}) 中,k 变量是检索当前对象的键,v 是它的值,因此您也可以通过以下方式访问它:

$.each(res, function (i, tickets) {
                  $.each(res[i], function (j, ticket) {
                      console.log(res[i][j].ticketId+' : '+res[i][j]);
                      // which is the exact same thing as :
                      console.log.(ticket);
                      // and even this:
                      console.(this);

                  });
});

使用 'this' 的相同代码:

$.each(res, function (i, tickets) {
                  $.each(this, function (j, ticket) {
                      console.log(this.ticketId+' : '+this);
                  });
});

使用每个值:

$.each(res, function (i, tickets) {
                  $.each(tickets, function (j, ticket) {
                      console.log(ticket.ticketId+' : '+ticket);
                  });
});
于 2012-07-15T08:21:29.157 回答
0

尝试:

var res = jQuery.parseJSON(eval(obj.Message));
于 2012-07-15T08:03:21.520 回答