2016-04-22 72 views
2

我正在編寫此代碼以從json文件中找到"types" : [ "locality", "political" ]的長名稱和"types" : [ "administrative_area_level_2", "political" ]的長名稱。但無法通過數組迭代正確遍歷node.js中的json文件

JS文件

var request = require('request'); 
request('http://maps.googleapis.com/maps/api/geocode/json?latlng=23.6519148,87.13857650000001', function(error, response, data) { 
    if (!(!error && response.statusCode == 200)) { 
     console.log('error! '); 
     return; 
    } 

    data = JSON.parse(data); 
    for (var i in data.results) { 
     for (var j in data.results[i]) { 
      if (j == 'address_components') { 
       console.log('found') 
       console.log(data.results[i][j][1]); 
       console.log(data.results[i][j][2]); 
       for (var k in data.results[i]){ 
        if(k == 'long_name') 
         console.log('found') 
       } 
       console.log('not found') 
      } 
     } 
     break; 
    } 
}); 

輸出

found 
{ long_name: 'Kunustoria', 
    short_name: 'Kunustoria', 
    types: [ 'locality', 'political' ] } 
{ long_name: 'Bardhaman', 
    short_name: 'Bardhaman', 
    types: [ 'administrative_area_level_2', 'political' ] } 
not found 
+0

作爲輸出需要什麼? –

+0

long_name「types」:[「locality」,「political」]和long_name的「types」:[「administrative_area_level_2」,「political」] .....即「Kunustoria」和「Bardhaman」 – Ankit

+0

。一旦你執行這一行'data = JSON.parse(data);'你不再處理JSON,而是處理一個普通的JavaScript對象。 –

回答

1

替換你與這個循環...

data = JSON.parse(data).results; 

data.forEach(function (address) { 
    console.log(address['address_components'][0].long_name); 
}); 
+0

謝謝,這給出了所有address_components的第一個長名,但我想要第一個address_components的第二個和第三個長名。我會盡量使用你的循環:) – Ankit

0

首先你必須安裝lodash。

NPM安裝--save lodash

var _ = require('lodash'); 
var data = api_response_from_google_maps;//Assign the api response here. 
var addrs = []; 
_.map(data.results, function (address) { 
    _.map(address.address_components, function (item) { 
    if (_.isEqual(item.types, ["locality", "political"]) || _.isEqual(item.types, ["administrative_area_level_1", "political"])) { 
     addrs.push(item); 
    } 
    }) 
}); 

console.log(JSON.stringify(addrs)); 

爲你指定這給出了adresses_components對象的數組與types陣列。