Я использую Flask и API геокодирования Google для получения данных о городе, я хочу вернуть его координаты в формате JSON.Вот соответствующий код.
from flask import Flask, request, json
import googlemaps
from datetime import datetime
import requests
app = Flask(__name__)
gmaps = googlemaps.Client(key='My-Key') #I replaced my key
@app.route("/search/<city>", methods=['GET'])
def _find_nearby_events(city):
request_address = '%(city)s , IN' % {'city':city}
geocode_result = gmaps.geocode(request_address)
coordinates = geocode_result["results"][0]["geometry"]["location"]
return json.dumps(coordinates)
Теперь, когда я использую почтальон для отправки запроса GET на "http://127.0.0.1:5000/search/pune", он возвращает эту ошибку в моей консоли
File "/home/akshay/Black_Thunder/event-listing-microservice/maps/views.py", line 51, in _find_nearby_events
coordinates = geocode_result["results"][0]["geometry"]["location"]
TypeError: list indices must be integers or slices, not str
Теперь я могу получить доступ к требуемому содержимому, если я изменил приведенное выше выражение координат как
coordinates = geocode_result[0]["geometry"]["location"]
Я не могу понять, почему это так. Доступ к ответу JSON, который отправляет API Geocode, можно получить здесь . Этот ответ также генерируется, если я использую приведенный ниже URL-адрес через браузер
https://maps.googleapis.com/maps/api/geocode/json?address=pune,+IN&key=[My-Key]
(подставьте ваш ключ)
Кроме того, я хотел знать, есть ли более питонский способверните код.