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 に答える