将Python字符串传递到JSON负载中

2024-03-29 06:05:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码里有这个:

targetTemp = 17
...
payload = "{\n    \"nodes\": [{\n        \"attributes\": {\n            \"targetHeatTemperature\": {\n                \"targetValue\": '+ targetTemp +',\n            }\n        }\n    }]\n}"

我尝试了一些我在网上找到的东西,但似乎没有任何效果。如果我把'+targetTemp+'替换成,比如说,18,那么它就可以满足我的需要了。在

我试过只用单引号,没有加号,只有变量名,结尾没有逗号。我只是在黑暗中蹒跚而行,真的。在


Tags: 代码结尾attributespayloadnodes逗号效果单引号
3条回答

您的payload非常复杂,不需要用引号将其括起来,因为它可以被视为dict,而且您的targetTemp被视为字符串这就是为什么您看不到实际值。在

为了简单起见,您可能需要查看Python string formatting。在

你想怎么做就怎么做

import json

targetTemp = 17
payload = {
    "nodes": [{
        "attributes": {
            "targetHeatTemperature": {
                "targetValue": targetTemp
            }
        }
    }]
}

print(json.dumps(payload))

# output,
{"nodes": [{"attributes": {"targetHeatTemperature": {"targetValue": 17}}}]}

请注意,您还可以使用JSON Validators来确保json对象的格式正确(这就是我用来格式化您提供的JSON)的方法

字符串不起作用的原因是您对字符串使用了双引号",而不是单引号'。由于json格式需要双引号,因此只应在字符串内部使用双引号,然后使用单引号来表示字符串的开始/结束。(这样你就不需要不必要地继续使用这些\"
另外,.format()可以帮助将变量放入字符串中,使它们更容易。在

这将修复您的json字符串:

targetTemp = 17

payload = '{\n    "nodes": [{\n        "attributes": {\n            "targetHeatTemperature": {\n                "targetValue": {},\n            }\n        }\n    }]\n}'.format(targetTemp)

但是,使用json模块会使事情变得更简单,因为它允许您传入一个python字典,该字典可以从/转换为json字符串。在

使用json包的示例:

^{pr2}$

最外面的双引号内的'+ targetTemp +'没有进行字符串连接。它实际上是在写文字。在

您应该使用"+ targetTemp +"

但是,构建一个实际的字典并使用json.dumps将不太容易出错

相关问题 更多 >