You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.x提取嵌套JSON数据:获取气象API指定时段气温

提取气象API嵌套JSON中的指定时段气温数据

原代码问题修正

调用met.no的API必须添加User-Agent请求头,否则会被拒绝访问;另外重复调用response.json()会重复解析数据,建议先将JSON数据存入变量,提升效率。

实现步骤

  1. 发送请求并解析JSON数据,存入变量避免重复解析
  2. 遍历properties.timeseries列表,逐个检查时间戳
  3. 匹配到目标时间后,提取对应时段的气温值

完整代码示例

import requests

# 必须添加User-Agent,met.no API要求标识请求来源
headers = {
    'User-Agent': 'YourAppName/1.0 (your@email.com)'
}

url = 'https://api.met.no/weatherapi/locationforecast/2.0/compact'
parameters = {
    "lat": 40.416695,
    "lon": 8.306090,
}

response = requests.get(url, headers=headers, params=parameters)
response.raise_for_status()  # 检查请求是否成功
weather_data = response.json()  # 解析JSON并存入变量

# 目标时间,格式要和API返回的一致
target_time = "2023-01-29T09:00:00Z"

# 遍历时间序列
for entry in weather_data['properties']['timeseries']:
    if entry['time'] == target_time:
        temp = entry['data']['instant']['details']['air_temperature']
        print(f"timestamp: {entry['time']}, temperature: {temp}°C")
        break  # 找到目标后退出循环,避免不必要的遍历
else:
    print(f"未找到时段 {target_time} 的数据")

代码说明

  • response.raise_for_status():如果请求返回错误状态码(比如403、404),会直接抛出异常,方便排查问题
  • 嵌套字典访问:JSON解析后是Python字典,可通过['key']逐层访问嵌套结构,比如weather_data['properties']['timeseries']直接拿到时间序列列表
  • for...else结构:如果循环正常结束(未匹配到目标时间),会执行else块的提示语句

内容的提问来源于stack exchange,提问作者pjoltergeist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:41:06