getJSON 警报不返回任何内容 - 数据问题?

getJSON alert not returning anything - data issue?

我在读取此数据时遇到问题:

看起来像这样:

{
  "ok": true,
  "messages": [
    {
      "text": "moo",
      "username": "bot",
      "type": "message",
      "subtype": "bot_message",
      "ts": "1448226157.000008"
    },
    {
      "text": "boo",
      "username": "bot",
      "type": "message",
      "subtype": "bot_message",
      "ts": "1448225998.000007"
    }
  ],
  "has_more": true
}

代码如下:

$.getJSON("https://slack.com/api/channels.history?token=xxxx&channel=C0E&pretty=1", function(result){
            $.each(result, function(i, field){
                $("div").append(field + " ");
            });
        });

我得到的只是

[object object][object object]

如何让数据正确显示?

你的意思是这样的:

var data = `{"ok": true,"messages": [
        {
            "text": "moo",
            "username": "bot",
            "type": "message",
            "subtype": "bot_message",
            "ts": "1448226157.000008"
        },
        {
            "text": "boo",
            "username": "bot",
            "type": "message",
            "subtype": "bot_message",
            "ts": "1448225998.000007"
        }
    ],
    "has_more": true
}`;

$(function() {
  var result = $.parseJSON(data);
  $.each(result, function(i, item) {
    if (typeof item != "object") {
      alert(item);
    } else {
      $.each(item, function(i, obj) {
        alert(obj.ts);
      });
    }

  });
});
   

样本fiddle:https://jsfiddle.net/4v0x34b1/

假设:

  1. 这是完整的 JSON
  2. 您想遍历消息

你的循环应该更像是:

$.each( result.messages,
  function( i, msg ) {
    $("div").append( msg.username + ": " + msg.text + " " );   
  }
);

(或您希望显示的任何字段)