无法获取 JSON 对象的特定值

Unable to get a specific value on a JSON object

我正在使用 Facebook Javascript SDK 获取收件箱消息,到目前为止我能够获取它们并将其转换为 JSON 对象

function getMsgs() { FB.api( "/me/inbox", function (response) { if (response && !response.error) { var result = JSON.stringify(response); document.getElementById("msgs").innerHTML="<pre>"+result+"</pre>"; } } ); } 我最终得到的是这样的:

{ "data":[ { "id":"15986833470221166", "to":{ "data":[ { "id":"7888047207869023", "name":"My Name" }, { "id":"101530783476778608", "name":"Friend Name" } ] }, "updated_time":"2015-02-08T03:09:02+0000", "unread":5, "unseen":0, "comments":{ "data":[ { "id":"159268645347021166_1421118060", "from":{ "id":"7888047207869023", "name":"My Name" }, "message":"blah blah blah", "created_time":"2015-01-13T03:01:00+0000" }, { "id":"159268645347021166_1421118060", "from":{ "id":"7888047207869023", "name":"My Name" }, "message":"blah blah blah", "created_time":"2015-01-13T03:01:16+0000" }, { "id":"159268645347021166_1421118060", "from":{ "id":"101530783476778608", "name":"Friend Name" }, "message":"blah blah blah", "created_time":"2015-01-13T03:01:23+0000" }, { "id":"159268645347021166_1421118060", "from":{ "id":"101530783476778608", "name":"Friend Name" }, "message":"blah blah blah", "created_time":"2015-01-13T03:01:30+0000" }, { "id":"159268645347021166_1421118060", "from":{ "id":"101530783476778608", "name":"Friend Name" }, "message":"blah blah blah", "created_time":"2015-02-08T03:09:02+0000" } ], "paging":{ "previous":"https://graph.facebook.com/v2.2/15986453474543021166/comments?access_token=TOKEN&limit=25&since=1423364314942&__paging_token=TOKEN&__previous=1", "next":"https://graph.facebook.com/v2.2/15986453474543021166/comments?access_token=TOKEN&limit=25&until=142111148324060&__paging_token=TOEKN" } } }

我想访问 'message' 值。我想创建一个数组来存储此 JSON 结构中的每个消息值。

根据您提供的json,您可以这样做:

// loop through the comments array
for ( var i = 0 ; i < json.data[0].comments.data.length; i++ )
{
    var d = json.data[0].comments.data[i];
    // codes here. Message is d.message

}

SAMPLE

如果只需要获取消息,可以用

  if (response && !response.error) {
      var m=null
          , result=JSON.stringify(response)
          , re=/"message":"([^"]+)"/g
          , messages=[];
      while( m=re.exec(result) ) {
          messages.push(m[1]);
      }
      // messages array should now hold all the values by key "message"
      //console.log(messages);
  }