首页 > 解决方案 > 使用 Python 将字符串插入 JSON

问题描述

我首先要说我大约 2 周前开始学习 Python,而且我不是专业的程序员。所以,我有一个 Pi 3 并且正在玩一些家庭自动化的东西。具体来说,我试图让 Pi 使用他们记录不充分的 API 来控制我的 Hive 设备。

我正在使用 Flask 并有登录路径、将访问令牌存储在会话变量中、检查变量是否存在等。

我能找到检查登录状态的唯一方法是发送一个简单的请求,看看它是否返回错误。如果我将令牌硬编码到 JSON 中,这将起作用。

这就是我所拥有的:

url = "https://api.prod.bgchprod.info:443/omnia/users"
    hiveSessionId = session['hiveSessionId']
    print hiveSessionId
    headers = {
        'Content-Type': "application/vnd.alertme.zoo-6.1+json",
        'Accept': "application/vnd.alertme.zoo-6.1+json",
        'X-Omnia-Client': "Hive Web Dashboard",
        'X-Omnia-Access-Token': "{hiveSessionId}",
        'Cache-Control': "no-cache",
        }
    print headers
    response = requests.request("GET", url, headers=headers)
    data=response.json()
    print(response.text)
    if 'errors' in data:
            return "Not logged in"
    return "Logged in"

就是这样说的:

'X-Omnia-Access-Token': "{hiveSessionId}",

我正在努力解决的问题。我尝试了各种不同的双引号、单引号、转义等许可——所有这些都可以在 stackexchange 上找到。

当我运行它时,我得到的是:

B4QpAIxAzIebkSKCQFCIjwQlALaLt
{'X-Omnia-Client': 'Hive Web Dashboard', 'Accept': 'application/vnd.alertme.zoo-6.1+json', 'X-Omnia-Access-Token': '{hiveSessionId}', 'Cache-Control': 'no-cache', 'Content-Type': 'application/vnd.alertme.zoo-6.1+json'}
{"errors":[{"code":"NOT_AUTHORIZED"}]}

所以会话ID在那里。我认为这只是将字符串插入 JSON 标头的语法,我弄错了。

任何帮助将不胜感激。

干杯安迪

标签: pythonjson

解决方案


典型的!

我在这里发帖 10 秒后,在搞砸了大约 3 个小时后,我找到了答案。专家会知道,但这是我为其他人所做的:

'X-Omnia-Access-Token': hiveSessionId,

就那么简单。

干杯安迪


推荐阅读