how to parse a Google Maps geocoding result how to parse a Google Maps geocoding result json json

how to parse a Google Maps geocoding result


You can check for 3 variables in the google response (json) to find the current cityname. Hence there is 3 different interpretation of the name:

Country     |AdministrativeArea     |     |_AdministrativeAreaName (cityname)     |     |_Locality_LocalityName (cityname)     |      |_SubAdministrativeArea                 |                 |_Locality_LocalityName (cityname)if ($this->json->Placemark[0]->AddressDetails->Country->AdministrativeArea->Locality->LocalityName != NULL) {  $code['cityname'] = $this->json->Placemark[0]->AddressDetails->Country->AdministrativeArea->Locality->LocalityName;} elseif ($this->json->Placemark[0]->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->Locality->LocalityName != NULL) {  $code['cityname'] = $this->json->Placemark[0]->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->Locality->LocalityName;} 

If you have more then a Placemark you need to loop through all the array.

   "results" : [      {         "address_components" : [            {               "long_name" : "277",               "short_name" : "277",               "types" : [ "street_number" ]            },            {               "long_name" : "Bedford Avenue",               "short_name" : "Bedford Ave",               "types" : [ "route" ]            },            {               "long_name" : "Williamsburg",               "short_name" : "Williamsburg",               "types" : [ "neighborhood", "political" ]            },            {               "long_name" : "Brooklyn",               "short_name" : "Brooklyn",               "types" : [ "sublocality", "political" ]            },            {               "long_name" : "Kings",               "short_name" : "Kings",               "types" : [ "administrative_area_level_2", "political" ]            },            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            },            {               "long_name" : "11211",               "short_name" : "11211",               "types" : [ "postal_code" ]            }         ],         "formatted_address" : "277 Bedford Avenue, Brooklyn, New York 11211, USA",         "geometry" : {            "location" : {               "lat" : 40.714232,               "lng" : -73.9612889            },            "location_type" : "ROOFTOP",            "viewport" : {               "northeast" : {                  "lat" : 40.7155809802915,                  "lng" : -73.9599399197085               },               "southwest" : {                  "lat" : 40.7128830197085,                  "lng" : -73.96263788029151               }            }         },         "types" : [ "street_address" ]      },      {         "address_components" : [            {               "long_name" : "Grand St/Bedford Av",               "short_name" : "Grand St/Bedford Av",               "types" : [ "bus_station", "transit_station", "establishment" ]            },            {               "long_name" : "Williamsburg",               "short_name" : "Williamsburg",               "types" : [ "neighborhood", "political" ]            },            {               "long_name" : "Brooklyn",               "short_name" : "Brooklyn",               "types" : [ "sublocality", "political" ]            },            {               "long_name" : "Kings",               "short_name" : "Kings",               "types" : [ "administrative_area_level_2", "political" ]            },            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            },            {               "long_name" : "11211",               "short_name" : "11211",               "types" : [ "postal_code" ]            }         ],         "formatted_address" : "Grand St/Bedford Av, Brooklyn, New York 11211, USA",         "geometry" : {            "location" : {               "lat" : 40.714321,               "lng" : -73.961151            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 40.71566998029149,                  "lng" : -73.95980201970849               },               "southwest" : {                  "lat" : 40.7129720197085,                  "lng" : -73.96249998029151               }            }         },         "types" : [ "bus_station", "transit_station", "establishment" ]      },      {         "address_components" : [            {               "long_name" : "Grand St/Bedford Av",               "short_name" : "Grand St/Bedford Av",               "types" : [ "bus_station", "transit_station", "establishment" ]            },            {               "long_name" : "Williamsburg",               "short_name" : "Williamsburg",               "types" : [ "neighborhood", "political" ]            },            {               "long_name" : "Brooklyn",               "short_name" : "Brooklyn",               "types" : [ "sublocality", "political" ]            },            {               "long_name" : "Kings",               "short_name" : "Kings",               "types" : [ "administrative_area_level_2", "political" ]            },            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            },            {               "long_name" : "11249",               "short_name" : "11249",               "types" : [ "postal_code" ]            }         ],         "formatted_address" : "Grand St/Bedford Av, Brooklyn, New York 11249, USA",         "geometry" : {            "location" : {               "lat" : 40.714684,               "lng" : -73.961563            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 40.71603298029149,                  "lng" : -73.9602140197085               },               "southwest" : {                  "lat" : 40.7133350197085,                  "lng" : -73.96291198029151               }            }         },         "types" : [ "bus_station", "transit_station", "establishment" ]      },      {         "address_components" : [            {               "long_name" : "Bedford Av/Grand St",               "short_name" : "Bedford Av/Grand St",               "types" : [ "bus_station", "transit_station", "establishment" ]            },            {               "long_name" : "Williamsburg",               "short_name" : "Williamsburg",               "types" : [ "neighborhood", "political" ]            },            {               "long_name" : "Brooklyn",               "short_name" : "Brooklyn",               "types" : [ "sublocality", "political" ]            },            {               "long_name" : "Kings",               "short_name" : "Kings",               "types" : [ "administrative_area_level_2", "political" ]            },            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            },            {               "long_name" : "11211",               "short_name" : "11211",               "types" : [ "postal_code" ]            }         ],         "formatted_address" : "Bedford Av/Grand St, Brooklyn, New York 11211, USA",         "geometry" : {            "location" : {               "lat" : 40.71471,               "lng" : -73.960999            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 40.7160589802915,                  "lng" : -73.95965001970849               },               "southwest" : {                  "lat" : 40.7133610197085,                  "lng" : -73.9623479802915               }            }         },         "types" : [ "bus_station", "transit_station", "establishment" ]      },      {         "address_components" : [            {               "long_name" : "11211",               "short_name" : "11211",               "types" : [ "postal_code" ]            },            {               "long_name" : "Brooklyn",               "short_name" : "Brooklyn",               "types" : [ "sublocality", "political" ]            },            {               "long_name" : "New York City",               "short_name" : "New York City",               "types" : [ "locality", "political" ]            },            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            }         ],         "formatted_address" : "Brooklyn, New York 11211, USA",         "geometry" : {            "bounds" : {               "northeast" : {                  "lat" : 40.7280089,                  "lng" : -73.9207299               },               "southwest" : {                  "lat" : 40.7008331,                  "lng" : -73.9644697               }            },            "location" : {               "lat" : 40.7093358,               "lng" : -73.9565551            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 40.7280089,                  "lng" : -73.9207299               },               "southwest" : {                  "lat" : 40.7008331,                  "lng" : -73.9644697               }            }         },         "types" : [ "postal_code" ]      },      {         "address_components" : [            {               "long_name" : "Williamsburg",               "short_name" : "Williamsburg",               "types" : [ "neighborhood", "political" ]            },            {               "long_name" : "Brooklyn",               "short_name" : "Brooklyn",               "types" : [ "sublocality", "political" ]            },            {               "long_name" : "New York City",               "short_name" : "New York City",               "types" : [ "locality", "political" ]            },            {               "long_name" : "Kings",               "short_name" : "Kings",               "types" : [ "administrative_area_level_2", "political" ]            },            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            }         ],         "formatted_address" : "Williamsburg, Brooklyn, New York, USA",         "geometry" : {            "bounds" : {               "northeast" : {                  "lat" : 40.7251773,                  "lng" : -73.936498               },               "southwest" : {                  "lat" : 40.6979329,                  "lng" : -73.96984499999999               }            },            "location" : {               "lat" : 40.7064461,               "lng" : -73.95361629999999            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 40.7251773,                  "lng" : -73.936498               },               "southwest" : {                  "lat" : 40.6979329,                  "lng" : -73.96984499999999               }            }         },         "types" : [ "neighborhood", "political" ]      },      {         "address_components" : [            {               "long_name" : "Kings",               "short_name" : "Kings",               "types" : [ "administrative_area_level_2", "political" ]            },            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            }         ],         "formatted_address" : "Kings, New York, USA",         "geometry" : {            "bounds" : {               "northeast" : {                  "lat" : 40.739446,                  "lng" : -73.83336509999999               },               "southwest" : {                  "lat" : 40.5695637,                  "lng" : -74.0429503               }            },            "location" : {               "lat" : 40.6528762,               "lng" : -73.95949399999999            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 40.739446,                  "lng" : -73.83336509999999               },               "southwest" : {                  "lat" : 40.5695637,                  "lng" : -74.0429503               }            }         },         "types" : [ "administrative_area_level_2", "political" ]      },      {         "address_components" : [            {               "long_name" : "Brooklyn",               "short_name" : "Brooklyn",               "types" : [ "sublocality", "political" ]            },            {               "long_name" : "New York City",               "short_name" : "New York City",               "types" : [ "locality", "political" ]            },            {               "long_name" : "Kings",               "short_name" : "Kings",               "types" : [ "administrative_area_level_2", "political" ]            },            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            }         ],         "formatted_address" : "Brooklyn, New York, USA",         "geometry" : {            "bounds" : {               "northeast" : {                  "lat" : 40.739446,                  "lng" : -73.83336509999999               },               "southwest" : {                  "lat" : 40.551042,                  "lng" : -74.05663               }            },            "location" : {               "lat" : 40.65,               "lng" : -73.95            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 40.739446,                  "lng" : -73.83336509999999               },               "southwest" : {                  "lat" : 40.551042,                  "lng" : -74.05663               }            }         },         "types" : [ "sublocality", "political" ]      },      {         "address_components" : [            {               "long_name" : "New York City",               "short_name" : "New York City",               "types" : [ "locality", "political" ]            },            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            }         ],         "formatted_address" : "New York City, New York, USA",         "geometry" : {            "bounds" : {               "northeast" : {                  "lat" : 40.91525559999999,                  "lng" : -73.70027209999999               },               "southwest" : {                  "lat" : 40.4959961,                  "lng" : -74.2590879               }            },            "location" : {               "lat" : 40.7143528,               "lng" : -74.00597309999999            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 40.91525559999999,                  "lng" : -73.70027209999999               },               "southwest" : {                  "lat" : 40.496006,                  "lng" : -74.25573489999999               }            }         },         "types" : [ "locality", "political" ]      },      {         "address_components" : [            {               "long_name" : "ニュー・ヨーク=ノーザン・ニュー・ジャージー=ロング・アイランド",               "short_name" : "ニュー・ヨーク=ノーザン・ニュー・ジャージー=ロング・アイランド",               "types" : [ "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            }         ],         "formatted_address" : "USA, ニュー・ヨーク=ノーザン・ニュー・ジャージー=ロング・アイランド",         "geometry" : {            "bounds" : {               "northeast" : {                  "lat" : 41.6018065,                  "lng" : -71.85621399999999               },               "southwest" : {                  "lat" : 39.49853299999999,                  "lng" : -75.3585939               }            },            "location" : {               "lat" : 40.9590293,               "lng" : -74.0300122            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 41.6018065,                  "lng" : -71.85621399999999               },               "southwest" : {                  "lat" : 39.49853299999999,                  "lng" : -75.3585939               }            }         },         "types" : [ "political" ]      },      {         "address_components" : [            {               "long_name" : "New York",               "short_name" : "NY",               "types" : [ "administrative_area_level_1", "political" ]            },            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            }         ],         "formatted_address" : "New York, USA",         "geometry" : {            "bounds" : {               "northeast" : {                  "lat" : 45.015865,                  "lng" : -71.85626429999999               },               "southwest" : {                  "lat" : 40.4959961,                  "lng" : -79.76214379999999               }            },            "location" : {               "lat" : 43.2994285,               "lng" : -74.21793260000001            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 45.0156269,                  "lng" : -71.85626429999999               },               "southwest" : {                  "lat" : 40.4960191,                  "lng" : -79.76214379999999               }            }         },         "types" : [ "administrative_area_level_1", "political" ]      },      {         "address_components" : [            {               "long_name" : "USA",               "short_name" : "US",               "types" : [ "country", "political" ]            }         ],         "formatted_address" : "USA",         "geometry" : {            "bounds" : {               "northeast" : {                  "lat" : 90,                  "lng" : 180               },               "southwest" : {                  "lat" : -90,                  "lng" : -180               }            },            "location" : {               "lat" : 37.09024,               "lng" : -95.712891            },            "location_type" : "APPROXIMATE",            "viewport" : {               "northeast" : {                  "lat" : 49.38,                  "lng" : -66.94               },               "southwest" : {                  "lat" : 25.82,                  "lng" : -124.39               }            }         },         "types" : [ "country", "political" ]      }   ],   "status" : "OK"}


I have a simple solution that works for the Google Geocode JSON results. It is a simple for loop that returns that short and long version in a string array. Just call the function and provide the "types" in the argument.

string[] street_number = GetJSONValueBasedOnType(record.geocode, "street_number");

    public string[] GetJSONValueBasedOnType(NewGoogleGeocode gc, string WhatYouWant){    string[] returns = new string[2];    returns[0] = string.Empty;    returns[1] = string.Empty;    bool isInIt;    foreach (var v in gc.results[0].address_components)    {        isInIt = false;        foreach (var t in v.types)        {            if (t == WhatYouWant)            {                isInIt = true;            }        }        if (isInIt)        {            returns[0] = v.short_name;            returns[1] = v.long_name;        }    }    return returns;}