Я настраиваю метеорологическую камеру, которая будет обеспечивать прямую трансляцию текущих условий на улице, но я также хотел бы накладывать постоянно обновляемые погодные условия (температура, скорость / направление ветра, текущая погода) из местной Национальной службы погодыметеостанция из источника API браузера, предоставленного в формате JSON.
Я успешно извлек нужные значения из другого источника API с помощью написанного мной скрипта Python;Однако, короче говоря, API-источник ненадежен.Поэтому я использую API с официальной станции ASOS Национальной службы погоды в моем ближайшем аэропорту.Вывод из нового источника API, из которого я опрашиваю, довольно сложен, однако с различными уровнями отступов.Я не работал с Python очень долго, и учебные пособия и руководства онлайн были либо для других языков (в основном Java или C ++), либо не работали для моего конкретного случая.
Прежде всего, вот структура JSON, который я получаю:
Я подчеркнул значения, которые я пытаюсьизвлечь.Они перечислены в разделе OBSERVATIONS
, связанном с precip_accum_24_hour_value_1
, wind_gust_value_1
, wind_cardinal_direction_value_1d
и т. Д.Проблема в том, что под каждым наблюдением есть два значения, поэтому сценарий, который я пробовал, не возвращает значения, которые я хочу.Вот код, который я попробовал:
import urllib.request
import json
f = urllib.request.urlopen('https://api.synopticdata.com/v2/stations/latest?token=8c96805fbf854373bc4b492bb3439a67&stid=KSTC&complete=1&units=english&output=json')
json_string = f.read()
parsed_json = json.loads(json_string)
for each in parsed_json['STATION']:
observations = each['OBSERVATIONS']
print(observations)
Это распечатывает все под OBSERVATIONS
в JSON, как и ожидалось, в виде одной длинной строки.
{'precip_accum_24_hour_value_1': {'date_time': '2018-12-06T11:53:00Z', 'value': 0.01}, 'wind_gust_value_1': {'date_time': '2018-12-12T01:35:00Z', 'value': 14.0},
, чтобы показать небольшой фрагмент вывода, который я получаю.Я надеялся, что смогу по отдельности извлечь нужные значения из этой строки, но все, что я пытался, не работает.Я был бы очень признателен за некоторые рекомендации по завершению этого фрагмента кода, чтобы я мог вернуть значения, которые я ищу.Я понимаю, что это может быть какой-то цикл или специальный синтаксис.