Estoy usando el SDK de Javascript de Facebook para obtener mensajes de la bandeja de entrada y hasta ahora pude obtenerlos y transformarlos en un objeto 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>"; } } ); } Y lo que termino obteniendo es algo como esto:


{  
   "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"
            }
         }
      }

Quiero acceder al valor del 'mensaje'. Quiero crear una matriz que almacene cada valor de mensaje en esta estructura JSON.

0
fedejp 11 feb. 2015 a las 06:16

2 respuestas

La mejor respuesta

Si solo necesita recibir los mensajes, puede hacerlo con

  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);
  }
1
Rico Chen 11 feb. 2015 a las 03:59

Según el json que proporcionó, puede hacer algo como esto:

// 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

}

MUESTRA

1
qtgye 11 feb. 2015 a las 03:48