【问题标题】:How to access a date element in JSON?如何访问 JSON 中的日期元素?
【发布时间】:2020-07-17 20:38:01
【问题描述】:

我在 Lambda 上设置了这个 API 端点,我的应用程序可以在其中进行通信并获取它需要的数据。 现在遇到的问题是尝试访问基于今天日期前一天的元素。

语言:Python 3.7

服务:AWS Lambda

提供者:WeatherStack

示例:https://weatherstack.com/documentation -> API 功能 -> 天气预报

为了从 API 提供者访问这个元素;我必须基本上设置一个如下所示的 JSON 结构:

"forecast": {
    "2020-04-04": {
        "date": "2020-04-04",
        "date_epoch": 1585958400,
        "astro": {
            "sunrise": "06:42 AM",
            "sunset": "07:31 PM",
            "moonrise": "03:26 PM",
            "moonset": "04:56 AM",
            "moon_phase": "Waxing Gibbous",
            "moon_illumination": 79
        },
        "mintemp": 46,
        "maxtemp": 54,
        "avgtemp": 50,
        "totalsnow": 0,
        "sunhour": 7.7,
        "uv_index": 2
    }
}

现在这里的问题是“2020-04-04”日期;因为我无法通过调用api_endpoint['forecast'][0] 来访问它,因为它会引发错误。但是,我使用 Lens 进行了检查,发现它确实在“预测”中有一个元素,当然是 2020-04-04,我在尝试访问时遇到了问题。

我不知道是否有办法根据昨天的日期动态设置要调用的元素,因为 api 提供者会每天更改预测日期元素。

我尝试了api_endpoint['forecast'][datetime.now()],但遇到了错误。 有没有办法在['forecast] 之后通过变量动态设置[],以便我可以随时根据api_endpoint['forecast'][yesterdaysdate] 调用它?

解决方案:

from datetime import timedelta, datetime
    ts = time.gmtime()
    todaysdate = (time.strftime("%Y-%m-%d", ts))
    yesterday_date = (datetime.datetime.utcnow() - timedelta(1)).strftime('%Y-%m-%d')

    data = api_response['forecast'][yesterday_date]

【问题讨论】:

  • 所以你想动态获取api_endpoint['forecast'][todays_date]api_endpoint['forecast'][yesterday_date]
  • api_endpoint['forecast'][yesterday_date]
  • 是的;已经添加了我的答案。

标签: json python-3.x amazon-web-services aws-lambda


【解决方案1】:

如果我理解正确,您想调用 api_endpoint['forecast'][yesterday_date] 中的数据。

如果是这样,可以这样实现:

from datetime import datetime, timedelta

yesterday_date = (datetime.now() - timedelta(1)).strftime('%Y-%m-%d')

# call to api
api_endpoint['forecast'][yesterday_date]

如果您想在几天前更改,请更改timedelta(2) 等等。

今天的变量可以这样赋值:

current_date = datetime.now().strftime('%Y-%m-%d')
api_endpoint['forecast'][current_date]

如果以上解决方案都不能回答您的问题,请发表评论。

【讨论】:

  • 非常感谢;这非常有帮助。我将为我的问题添加一个解决方案,以防有人遇到同样的问题。
猜你喜欢
  • 1970-01-01
  • 2021-09-17
  • 2023-03-10
  • 2019-04-15
  • 2013-04-14
  • 2019-09-06
  • 1970-01-01
  • 2020-02-12
  • 2018-04-01
相关资源
最近更新 更多