2013-09-08 2 views
-3

Я пытаюсь получить доступ к свойствам в ответе JSON GET с помощью модуля request nodejs.Свойство Nodejs JSON undefined

Когда я получаю ответ, я не могу напечатать конкретные свойства. Каждый раз, когда я пытаюсь напечатать свойство, я получаю сообщение об ошибке его неопределенности.

Я пробовал подтягивать и разбирать JSON, но оба не работали. Заранее спасибо.

var request = require("request"); 

//The search query 
var query = "TGI fridays"; 

//path of http request 
var path = "https://maps.googleapis.com/maps/api/place/textsearch/json?query="+query+"&sensor=false&key=AIzaSyA-adbJAXBmOTGINrhWHskm4d7UU9dgnOU"; 


//function to print the json 
var parser = function(text){ 
    console.log(text); 


} 
//http request with callback 
request(path,function(error, response, body){ 
    parser(body.next_page_token); //a property from the json that comes up as undefined 
}) 

Heres некоторые из JSON

{ 
    "debug_info" : [], 
    "html_attributions" : [], 
    "next_page_token" : "CjQsAAAAM5EDuFB7u9bIQ_3KeBsa894EjYv4ca3GVN45O2cBPWUaDFkebH7r_WQy2Jf-QqZZEhDUipJwL4YXDtanJ0euTGe4GhTs6PW_jM0Ops33vWwD-5aGsk7giQ", 
    "results" : [ 
     { 
     "formatted_address" : "403 Camino Del Rio South, San Diego, CA, United States", 
     "geometry" : { 
      "location" : { 
       "lat" : 32.760091, 
       "lng" : -117.161897 
      } 
     }, 
     "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png", 
     "id" : "29f39df87b93cf8b98062fdccc877a61fb45925a", 
     "name" : "TGI Fridays", 
     "opening_hours" : { 
      "open_now" : true 
     }, 
     "photos" : [ 
      { 
       "height" : 782, 
       "html_attributions" : [], 
       "photo_reference" : "CoQBdgAAAFw5rZL8KjKfsBudSV-fNyRQUy5kflYnWJUrsN8PHzVsrP8v3R5eCKkRJOUj8fXnAtXnZZ34G5BRoNys7mLd0QJ3LEj-tLeY9LSs4B9jOyNpaNAszEZDh9kyQkfWr4POMxqwKCYN5gxFsMB4-NvGoG3sFZaOOySOKs6vVNPPL9fVEhCKe8eESOot42-Zxm4MBPPaGhSsiMuJbzuIzOpqTcEHEsL1c6GXYg", 
       "width" : 1146 
      } 
     ], 
     "price_level" : 2, 
     "rating" : 3.2, 
     "reference" : "CnRpAAAAp9SAKVfthj4gk3rSghMmI3_ZJaGTzGPhVtDsdtSyG3WunYPrYEN7dAA0iEmmsTLx3ANN9FAZZ6bVNnyUxWAwEFe8a-IsTSJZwNTYq-6fMujMZJgjTWgSSWo5LXy88NdccA3l-PQ2pX2Dnz4SnLy0dhIQ_hVBBDjk8QV2oOS-THq3BBoUKOSwQjmKFn5KeJq43p4JIkANwPU", 
     "types" : [ "bar", "restaurant", "food", "establishment" ] 
     }, 
+0

@ruakh ' parser (body.next_page_token); 'похоже на такую ​​попытку. @ user2758113 возможно 'parser (response.next_page_token)' принадлежит? –

+0

@ Парень JanDvorak (response.next_page_token) не работает. все еще не определен. Спасибо хоть. – user2758113

+0

@JanDvorak: Когда я отправил свой комментарий, эта строка была просто 'parser (body);'. С тех пор ОП улучшил вопрос. :-) (я удалю свой комментарий.) – ruakh

ответ

0

тела является строкой. Попробуйте:

//http request with callback 
request(path,function(error, response, body){ 
    body = JSON.parse(body); 
    parser(body.next_page_token); //a property from the json that comes up as undefined 
}) 

Результат (очень большая строка):

CjQsAAAAls3nW7k5vyODIeouCv_HT_PBhB9s7KNftqBRiDWtJR3RY_KOLthW4TFj-2HNlnezEhDiq73Z83kFvtpQqWfuBb-AGhT6yoVHZHNe1EmM3UWe34jfs65oHg 

Примечание: Вы также можете использовать эту форму, чтобы сообщить request, что вы ожидаете JSon:

request.get({url: path, json:true},function(error, response, body){ 
    parser(body.next_page_token); //a property from the json that comes up as undefined 
}) 
+0

Это сработало! Благодаря! – user2758113

Смежные вопросы