Я играю с Google Maps и геокодированием (преобразование адреса в координаты lang / lat). Пока все отлично работает, и я получаю ответ от сервера карт Google с файлом:
<code>$address = urlencode( $address );
$url = "http://maps.google.com/maps/api/geocode/json?address={$address}&sensor=false";
$content = file_get_contents( $url );
echo '<pre>';
print_r( $content );
echo '
';
Дело в том, что мне не нужна вся эта информация.
Вопросы
A Как получить только часть объекта JSON?
( Пример : мне нужно только 'results'->'address_components'->'type' = 'country';
.)
B Можно ли как-то уменьшить содержимое возвращаемого файла (google), так как мне все не нужно?
Update
Мне нужно добавить часть данных в объект json. Таким образом, декодирование и последующее кодирование кажутся потерей энергии и времени (на данный момент). Любые идеи, если бы я был лучше (быстрее) с запросом объекта XML? (Окончательный набор объектов довольно большой. Вот почему я действительно должен заботиться о производительности.)
Пример ответа JSON с сервера карт Google Maps (содержимое файла):
{
"results" : [
{
"address_components" : [
{
"long_name" : "28",
"short_name" : "28",
"types" : [ "street_number" ]
},
{
"long_name" : "Sellhorner Weg",
"short_name" : "Sellhorner Weg",
"types" : [ "route" ]
},
{
"long_name" : "Behringen",
"short_name" : "Behringen",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Bispingen",
"short_name" : "Bispingen",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Soltau-Fallingbostel",
"short_name" : "Soltau-Fallingbostel",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Niedersachsen",
"short_name" : "NDS",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Deutschland",
"short_name" : "DE",
"types" : [ "country", "political" ]
},
{
"long_name" : "29646",
"short_name" : "29646",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "Sellhorner Weg 28, 29646 Bispingen, Deutschland",
"geometry" : {
"location" : {
"lat" : 53.118080,
"lng" : 9.966859999999999
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 53.11942898029150,
"lng" : 9.96820898029150
},
"southwest" : {
"lat" : 53.11673101970850,
"lng" : 9.965511019708496
}
}
},
"partial_match" : true,
"types" : [ "street_address" ]
}
],
"status" : "OK"
}