Я использовал следующее для добавления информации в ответ JSON.Добавление данных в ответ JSON в зависимости от кода состояния ответа JSON
for result in results:
if result["status"] == "OK":
for route, origincoord in izip(results, origincoords):
route['routes'][0]['legs'][0][u'_sent_origin'] = origincoord
Где origincoords - это список координат. Количество origincoords равно числу словарей JSON, которые у меня есть.
Это прекрасно работает при условии, что ответ JSON верен, действителен (т. Е. «Статус»: «ОК»).
Однако, если по какой-либо причине это не так (например, Unknown_Error, Not_Found и т. Д.), То указанное выше не будет выполнено, поскольку соответствующие исходные слова не могут быть сопряжены с соответствующим JSON-ответом. 1. Целостность данных теряется и 2. не существует равного количества словарей JSON для исходных указателей, поэтому повышается погрешность индекса и 3. Местоположение для вставки данных невозможно с указанным путем [«маршруты»] [ 0] ['legs'] [0] [u'_sent_origin], поскольку он не будет существовать, когда возвращается статус! = «OK».
Я попытался следующим преодолеть это -
for result in results:
for route, origincoord in izip(results, origincoords):
if result["status"] == "OK":
route['routes'][0]['legs'][0][u'_sent_origin'] = origincoord
if result["status"] != "OK":
route[u'_sent_origin'] = origincoord
Однако это также возвращает IndexError
route['routes'][0]['legs'][0][u'_sent_origin'] = origincoord
IndexError: list index out of range
Как сохранить целостность приложенной информации их JSON ответы в сценарии ответа JSON с ошибкой?
EDIT. Мой желаемый результат.
В этом примере первый результат имеет неизвестную ошибку, вторая - в порядке, а третья - неизвестная.
origincoords = ['51.51964085,-0.092434321',
'51.51963442,-0.092433965',
'51.52208762,-0.095990014']
results = [{u'routes': [], u'status': u'UNKNOWN_ERROR'},
{u'routes': [{u'bounds': {u'northeast': {u'lat': value,
u'lng': value},
u'southwest': {u'lat': value,
u'lng': value}},
u'copyrights': u'value',
u'overview_polyline': {u'points': u’value’},
u'summary': u’value’,
u'warnings': [],
u'waypoint_order': []}],
u'status': u'OK'},
{u'routes': [], u'status': u'UNKNOWN_ERROR'}]
Я хотел бы пару первого набора origincoords на первый ответ JSON, второй на второй формат JSON и т.д.
Таким образом
results = [{u'routes': [], u'status': u'UNKNOWN_ERROR', u'_sent_origin': '51.51964085,-0.092434321'},
{u'routes': [{u'bounds': {u'northeast': {u'lat': value,
u'lng': value},
u'southwest': {u'lat': value,
u'lng': value}},
u'copyrights': u'value',
u'overview_polyline': {u'points': u’value’},
u'summary': u’value’,
u'warnings': [],
u'waypoint_order': []}],
u'status': u'OK',
u'_sent_origin': '51.51963442,-0.092433965'}],
{u'routes': [], u'status': u'UNKNOWN_ERROR', u'_sent_origin': '51.52208762,-0.095990014'}]
Спасибо @Kaz. Это все равно приводит к IndexError. Я добавил дополнительные подробности к моему вопросу в надежде сделать его более ясным – LearningSlowly