2016-12-15 4 views
0

jsonを解析してデータを取得したいのですが、jsonを解析できません。jsonを解析して返されたjsonから最新の画像を取得できますか?以下は私のコードです。私はnodejsのデータをフェッチするためにFacebookのグラフAPIを使用しています。以下はnodebook.jsのfacebook graph apiからjsonレスポンスを解析するにはどうすればいいですか?

var params = { 
     hostname: 'graph.facebook.com', 
     port: 443, 
     path: '/' + 'abc' + '/posts?limit=1&access_token=' + access_token, 
     method: 'GET' 
    }; 

    https.get(params, function (response) { 

     response.setEncoding("utf8"); 
     var str; 

     response.on('data', function (chunk) { 
      str += chunk; 
     }); 

     response.on('end', function() { 
      let parsedJSON = JSON.parse(JSON.stringify(str.replace('undefined',''))); 
      console.log(parsedJSON) 
     }); 

     //response.on("error", callback); 
    }); 

JSONは

{"data":[{"id":"59894622407_10154329906162408","from":{"name":"test","category":"Musician\/Band","id":"59894622407"},"story":"test added a new photo.","story_tags":{"0 
":[{"id":"59894622407","name":"test","type":"page","offset":0,"length":13}]},"picture":"https:\/\/fb-s-b-a.akamaihd.net\/h-ak-xfp1\/v\/t1.0-0\/s130x130\/15355780_10154329906162 
408_5875132517762157349_n.jpg?oh=8073a90ae0875087526d7df17026c6d6&oe=58EBC355&__gda__=1492252529_3be752b46923ec57756a10aac0ed7d00","link":"https:\/\/www.facebook.com\/steveangello\/phot 
os\/a.94880267407.90862.59894622407\/10154329906162408\/?type=3","name":"Timeline Photos","icon":"https:\/\/www.facebook.com\/images\/icons\/photo.gif","actions":[{"name":"Comment","lin 
k":"https:\/\/www.facebook.com\/59894622407\/posts\/10154329906162408"},{"name":"Like","link":"https:\/\/www.facebook.com\/59894622407\/posts\/10154329906162408"}],"privacy":{"value":"" 
,"description":"","friends":"","allow":"","deny":""},"type":"photo","status_type":"added_photos","object_id":"10154329906162408","created_time":"2016-12-06T21:53:59+0000","updated_time" 
:"2016-12-08T05:12:50+0000","shares":{"count":23},"is_hidden":false,"is_expired":false,"likes":{"data":[{"id":"501151263322971","name":"Rodrigo Souza"},{"id":"768894736480072","name":"S 
abrina Nowak"},{"id":"476977029122705","name":"Lucas Jorge"},{"id":"1066686763428275","name":"Joel Tortoza"},{"id":"978618302155232","name":"Fredrik Ekman"},{"id":"825511184211089","nam 
e":"Claudia Melany"},{"id":"20","name":"Elroy Menezes"},{"id":"10152441945281893","name":"David Felipe Cubides"},{"id":"256367567906848","name":"\u5f35\u5bb6\u8c6a"},{"id": 
"618659598264403","name":"Emmanuel Flores Aguilar"},{"id":"721050467990702","name":"M\u00e1rk Vincze"},{"id":"296467763880099","name":"Diego Acevedo"},{"id":"311139792427594","name":"Sa 
brina Ferreira"},{"id":"10202154736205366","name":"Daniel Serrano"},{"id":"286221065099212","name":"Sagar Sagar"},{"id":"764516163614845","name":"Jorge Alfaro"},{"id":"1516694278612817" 
,"name":"Ana Jovic"},{"id":"1043994228959517","name":"\u856d\u6631\u8343"},{"id":"1557743521105543","name":"Anurag Joseph"},{"id":"690230501048923","name":"K\u00eania Kalaary"},{"id":"1 
524631327785338","name":"Briggit Briggit Lama"},{"id":"1521742991374262","name":"Welliton Hedfors"},{"id":"514876388649091","name":"Diego Mu\u00f1oz Aravena"},{"id":"10204325398916739", 
"name":"Soledad Mendez"},{"id":"1441328976182536","name":"Rahmouni Naim"}],"paging":{"cursors":{"before":"NTAxMTUxMjYzMzIyOTcx","after":"MTQ0MTMyODk3NjE4MjUzNgZDZD"},"next":"https:\/\/g 
raph.facebook.com\/v2.2\/59894622407_10154329906162408\/likes?access_token=EAACEdEose0cBANTYM3rlcZAFmfpoXBtde2qTs8RlXlu18JoLANzBZBAr1kRiBhS4ukg9sPAdZAIQgZCzGaOAA3fKrcZBvpdFihFZAqOdpCDGE 
GkyIoXOKxn3lZBFbUk6TKDKZCPemqjsu2HpIEUSsiRGZCSAeWzwsdAsC46nsxZALItwZDZD&limit=25&after=MTQ0MTMyODk3NjE4MjUzNgZDZD"}},"comments":{"data":[{"created_time":"2016-12-07T00:19:54+0000","from 
":{"name":"Jimmy Gillis","id":"504369689666766"},"message":"Guys. SHM isn't coming back. It's called reflecting back on your career. Look it up. As for people saying White Label, I thou 
ght that was Still Young. Or is it a collab and I'm just out of the loop. Lol!","can_remove":false,"like_count":11,"user_likes":false,"id":"10154329906162408_10154330237617408"},{"creat 
ed_time":"2016-12-07T05:55:51+0000","from":{"name":"Dim Mak","id":"340370722809278"},"message":"I'de love if they make reunion SHM & the world will be happy place once again but i'm not 
quite sur bcs \/\\ haven't post something about this nor steve","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_10154330974057408"},{"created_time":"2016-1 
2-06T22:13:49+0000","from":{"name":"Giancarlo Barbosa","id":"564134713695108"},"message":"Swedish House Mafia RETURNS!!!\nOMG!!!","can_remove":false,"like_count":45,"user_likes":false," 
id":"10154329906162408_10154329944297408"},{"created_time":"2016-12-07T13:06:34+0000","from":{"name":"Sabrina Gabriela","id":"686255621457347"},"message":"Que neblina \u00e9 essa gente? 
Algu\u00e9m me explica o que t\u00e1 acontecendo?! \ud83d\ude32","can_remove":false,"like_count":1,"user_likes":false,"id":"10154329906162408_10154331845117408"},{"created_time":"2016- 
12-06T22:20:31+0000","from":{"name":"Fran Diaz","id":"967432759953559"},"message":"withe label?","can_remove":false,"like_count":8,"user_likes":false,"id":"10154329906162408_10154329954 
867408"},{"created_time":"2016-12-06T23:26:28+0000","from":{"name":"Vinicius Nunes","id":"2084163351809122"},"message":"I loved so much #SHM","can_remove":false,"like_count":1,"user_lik 
es":false,"id":"10154329906162408_10154330113592408"},{"created_time":"2016-12-06T23:30:41+0000","from":{"name":"Cleusa Helena","id":"335130179972664"},"message":"QUE MURAL QUE LINHA DO 
TEMPO MAGN\u00cdFICA, EU AMEI ISSO.","can_remove":false,"like_count":1,"user_likes":false,"id":"10154329906162408_10154330122782408"},{"created_time":"2016-12-06T22:02:07+0000","from": 
{"name":"Michele Rodrigues","id":"848822195130984"},"message":"BRAS\u00cdLIA \u2764","can_remove":false,"like_count":4,"user_likes":false,"id":"10154329906162408_10154329922912408"},{"c 
reated_time":"2016-12-06T22:05:36+0000","from":{"name":"Marco Fienco","id":"692199097509216"},"message":"I'm starting to understand....","can_remove":false,"like_count":3,"user_likes":f 
alse,"id":"10154329906162408_10154329930312408"},{"created_time":"2016-12-07T01:36:28+0000","from":{"name":"Trishant Bhatt","id":"4696493828520"},"message":"Almost Human. Can't wait Ste 
ve!","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_10154330409822408"},{"created_time":"2016-12-06T21:58:39+0000","from":{"name":"Aldo Roaro","id":"717976 
528280233"},"message":"What is going on?","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_10154329916492408"},{"created_time":"2016-12-07T11:08:33+0000","fr 
om":{"name":"Alexander Kuhn","id":"454646201305234"},"message":"'Steve Trollangello'","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_10154331577647408"},{" 
created_time":"2016-12-06T22:01:50+0000","from":{"name":"Bruno Coelho","id":"755657994474120"},"message":"Carreira a desaparecer?","can_remove":false,"like_count":2,"user_likes":false," 
id":"10154329906162408_10154329922467408"},{"created_time":"2016-12-07T06:12:24+0000","from":{"name":"\u00c7h\u00e9raz Angello","id":"118651871902126"},"message":"What's going on :\/ 
!_! ???","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_10154331005852408"},{"created_time":"2016-12-06T22:08:16+0000","from":{"name":"Laura Gologan","id": 
"10203620871024076"},"message":"can't wait","can_remove":false,"like_count":1,"user_likes":false,"id":"10154329906162408_10154329935232408"},{"created_time":"2016-12-07T00:48:27+0000"," 
from":{"name":"Marco Marangoni","id":"891858470894475"},"message":"White label? =D","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_10154330283677408"},{"cr 
eated_time":"2016-12-06T23:01:42+0000","from":{"name":"Javier Niebla","id":"865397846832235"},"message":"AMAZING","can_remove":false,"like_count":1,"user_likes":false,"id":"101543299061 
62408_10154330062432408"},{"created_time":"2016-12-06T22:28:41+0000","from":{"name":"Dilan Rodrigo","id":"1477988185861301"},"message":"ya no habra mas musica :(","can_remove":false,"li 
ke_count":0,"user_likes":false,"id":"10154329906162408_10154329974492408"},{"created_time":"2016-12-06T22:09:12+0000","from":{"name":"Adri\u00e1n Chrzan","id":"4724407563694"},"message" 
:"white label \ud83d\ude4f\ud83c\udffc\ud83d\ude4f\ud83c\udffc\ud83d\ude4f\ud83c\udffc\ud83d\ude4f\ud83c\udffc","can_remove":false,"like_count":1,"user_likes":false,"id":"10154329906162 
408_10154329936932408"},{"created_time":"2016-12-07T00:53:07+0000","from":{"name":"Emiliano Silva Hern\u00e1ndez","id":"745195662243453"},"message":"SHM!!!!! \u003C3","can_remove":false 
,"like_count":1,"user_likes":false,"id":"10154329906162408_10154330290162408"},{"created_time":"2016-12-06T22:02:11+0000","from":{"name":"Fernando Vera","id":"1271443652870442"},"messag 
e":"White label? Maybe","can_remove":false,"like_count":1,"user_likes":false,"id":"10154329906162408_10154329923012408"},{"created_time":"2016-12-08T05:12:50+0000","from":{"name":"David 
Bracelis","id":"10152315489805743"},"message":"Q q eh isso mw","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_10154334802627408"},{"created_time":"2016-12 
-06T22:00:13+0000","from":{"name":"Shk\u00eblqim Bajrami","id":"698371730197942"},"message":"\ud83d\udc4c","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_1 
0154329919727408"},{"created_time":"2016-12-06T23:00:37+0000","from":{"name":"\u041c\u0430\u0440\u043b\u043e\u043d \u0421\u043b\u0443\u0448\u0430\u0439","id":"1395778260740376"},"messag 
e":":)","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_10154330061082408"},{"created_time":"2016-12-07T04:09:26+0000","from":{"name":"KYAMI","category":"Pr 
oducer","id":"1153026888082927"},"message":"Mindblowing idea! Can't wait to see the results \ud83d\ude03","can_remove":false,"like_count":0,"user_likes":false,"id":"10154329906162408_10 
154330732562408"}],"paging":{"cursors":{"before":"NDAZD","after":"MTYZD"},"next":"https:\/\/graph.facebook.com\/v2.2\/59894622407_10154329906162408\/comments?access_token=EAACEdEose0cBA 
NTYM3rlcZAFmfpoXBtde2qTs8RlXlu18JoLANzBZBAr1kRiBhS4ukg9sPAdZAIQgZCzGaOAA3fKrcZBvpdFihFZAqOdpCDGEGkyIoXOKxn3lZBFbUk6TKDKZCPemqjsu2HpIEUSsiRGZCSAeWzwsdAsC46nsxZALItwZDZD&limit=25&after=MT 
YZD"}}}],"paging":{"previous":"https:\/\/graph.facebook.com\/v2.2\/59894622407\/posts?limit=1&since=1481061239&access_token=EAACEdEose0cBANTYM3rlcZAFmfpoXBtde2qTs8RlXlu18JoLANzBZBAr1kRi 
BhS4ukg9sPAdZAIQgZCzGaOAA3fKrcZBvpdFihFZAqOdpCDGEGkyIoXOKxn3lZBFbUk6TKDKZCPemqjsu2HpIEUSsiRGZCSAeWzwsdAsC46nsxZALItwZDZD&__paging_token=enc_AdBGZBW4eORrfLkCxC8kKx4kCsLnN2GHrLCchaxdt5Xrz 
Vb1HjobR9Rshh9YIkkIgmw4OLUDsEybQCheQ3PBeJNx2&__previous=1","next":"https:\/\/graph.facebook.com\/v2.2\/59894622407\/posts?limit=1&access_token=EAACEdEose0cBANTYM3rlcZAFmfpoXBtde2qTs8RlX 
lu18JoLANzBZBAr1kRiBhS4ukg9sPAdZAIQgZCzGaOAA3fKrcZBvpdFihFZAqOdpCDGEGkyIoXOKxn3lZBFbUk6TKDKZCPemqjsu2HpIEUSsiRGZCSAeWzwsdAsC46nsxZALItwZDZD&until=1481061239&__paging_token=enc_AdBGZBW4e 
ORrfLkCxC8kKx4kCsLnN2GHrLCchaxdt5XrzVb1HjobR9Rshh9YIkkIgmw4OLUDsEybQCheQ3PBeJNx2"}} 

答えて

0

を返されるこれは、エラーのようになります。

response.on('end', function() { 
     let parsedJSON = JSON.parse(JSON.stringify(str.replace('undefined',''))); 
     console.log(parsedJSON) 
    }); 

strはすでに文字列です。あなたはJSON.stringify()を文字列に呼んではいけません。そうしないと、ダブルエンコードが終わります。ここで

'use strict'; 

const https = require('https'); 

const access_token = 'EAAaFIbbzLZAkBAKdplMOlhckeDI5W2P37ZB20qMTZCMYfGv2Bw5FQcb7PlCnZBf5b0szAXuKUqTEZCLCSipGZCx4uaF42dAhxcoJ98v7XwEDjT0Y2A2fzlCc7nuUMOc4GCgEZCiQ3yT9sV5lba9GppSqowR8HRg8ZADMJcZAX5Y1qOAZDZD'; 

const params = { 
    hostname: 'graph.facebook.com', 
    port: 443, 
    path: '/' + 'abc' + '/posts?limit=1&access_token=' + access_token, 
    method: 'GET' 
}; 

https.get(params, function(response) { 

    response.setEncoding("utf8"); 
    let str = ''; 

    response.on('data', chunk => str += chunk); 

    response.on('end',() => { 
    let parsedJSON = JSON.parse(str.replace('undefined','')); 
    console.log(parsedJSON) 
    }); 
}); 

は私の出力です:私はここに私の完全なコードです

response.on('end', function() { 
     let parsedJSON = JSON.parse(str.replace('undefined','')); 
     console.log(parsedJSON) 
    }); 

試してみた。この出力はあなたの出力が文字列オブジェクトであることを

{ data: 
    [ { message: 'Several studies have shown an optimistic thinking style is linked with better health and living longer, and in particular a reduced risk of dying from heart disease. \n\nABC Health & Wellbeing | http://ab.co/2hwLeBx', 
     created_time: '2016-12-15T10:00:13+0000', 
     id: '194764094549_10154508296244550' } ], 
    paging: 
    { previous: 'https://graph.facebook.com/v2.8/194764094549/posts?limit=1&since=1481796013&access_token=EAAaFIbbzLZAkBAKdplMOlhckeDI5W2P37ZB20qMTZCMYfGv2Bw5FQcb7PlCnZBf5b0szAXuKUqTEZCLCSipGZCx4uaF42dAhxcoJ98v7XwEDjT0Y2A2fzlCc7nuUMOc4GCgEZCiQ3yT9sV5lba9GppSqowR8HRg8ZADMJcZAX5Y1qOAZDZD&__paging_token=enc_AdApjLiLvzI37u3lbyKcsJFU05GtwQc1RoACciuJw8dxQUWQpqY39UfrjPNpMR9MHMMBTiY4W7EMSFKDf59m19lH6NMlJU0IofZBC7IdRc0gIlAZDZD&__previous=1', 
    next: 'https://graph.facebook.com/v2.8/194764094549/posts?limit=1&access_token=EAAaFIbbzLZAkBAKdplMOlhckeDI5W2P37ZB20qMTZCMYfGv2Bw5FQcb7PlCnZBf5b0szAXuKUqTEZCLCSipGZCx4uaF42dAhxcoJ98v7XwEDjT0Y2A2fzlCc7nuUMOc4GCgEZCiQ3yT9sV5lba9GppSqowR8HRg8ZADMJcZAX5Y1qOAZDZD&until=1481796013&__paging_token=enc_AdApjLiLvzI37u3lbyKcsJFU05GtwQc1RoACciuJw8dxQUWQpqY39UfrjPNpMR9MHMMBTiY4W7EMSFKDf59m19lH6NMlJU0IofZBC7IdRc0gIlAZDZD' } } 

注によるもの余分な時間をJSON.stringify()と呼んでください。

ここではJSONオブジェクトが読み少し簡単だ形でです:

{ 
    data: [ 
     { 
      message: 'Several studies have shown an optimistic thinking style is linked with better health and living longer, and in particular a reduced risk of dying from heart disease. \n\nABC Health & Wellbeing | http://ab.co/2hwLeBx', 
      created_time: '2016-12-15T10:00:13+0000', 
      id: '194764094549_10154508296244550' 
     } 
    ], 
    paging: { 
     previous: 'https://graph.facebook.com/v2.8/194764094549/posts?limit=1&since=1481796013&access_token=EAAaFIbbzLZAkBAKdplMOlhckeDI5W2P37ZB20qMTZCMYfGv2Bw5FQcb7PlCnZBf5b0szAXuKUqTEZCLCSipGZCx4uaF42dAhxcoJ98v7XwEDjT0Y2A2fzlCc7nuUMOc4GCgEZCiQ3yT9sV5lba9GppSqowR8HRg8ZADMJcZAX5Y1qOAZDZD&__paging_token=enc_AdApjLiLvzI37u3lbyKcsJFU05GtwQc1RoACciuJw8dxQUWQpqY39UfrjPNpMR9MHMMBTiY4W7EMSFKDf59m19lH6NMlJU0IofZBC7IdRc0gIlAZDZD&__previous=1', 
     next: 'https://graph.facebook.com/v2.8/194764094549/posts?limit=1&access_token=EAAaFIbbzLZAkBAKdplMOlhckeDI5W2P37ZB20qMTZCMYfGv2Bw5FQcb7PlCnZBf5b0szAXuKUqTEZCLCSipGZCx4uaF42dAhxcoJ98v7XwEDjT0Y2A2fzlCc7nuUMOc4GCgEZCiQ3yT9sV5lba9GppSqowR8HRg8ZADMJcZAX5Y1qOAZDZD&until=1481796013&__paging_token=enc_AdApjLiLvzI37u3lbyKcsJFU05GtwQc1RoACciuJw8dxQUWQpqY39UfrjPNpMR9MHMMBTiY4W7EMSFKDf59m19lH6NMlJU0IofZBC7IdRc0gIlAZDZD' 
    } 
} 

私はそれが私がミスを指摘:)働いていたこの

console.log(parsedJSON.data[0].message); 
console.log(parsedJSON.paging.next); 
+0

おかげのように、そこからデータを抽出することができます –

関連する問題