使用python'request'发送JSON布尔值

时间:2013-07-31 20:30:48

标签: python rest python-requests

我有一个非常简单的问题,但我无法弄明白该怎么做。我遇到的问题是我想使用Python和请求发送以下有效负载:

{ 'on': true }

这样做:

payload = { 'on':true }
r = requests.put("http://192.168.2.196/api/newdeveloper/lights/1/state", data = payload)

不起作用,因为我收到以下错误:

NameError: name 'true' is not defined

我的服务器不接受将 true 作为'true'发送,因此这不是一个选项。有人建议吗?谢谢!

4 个答案:

答案 0 :(得分:16)

你需要对它进行json编码才能将其变为字符串。

import json 
payload = json.dumps({"on":True})

答案 1 :(得分:1)

应该是{'on':True},大写T

答案 2 :(得分:0)

使其变为小写(如果这是您的端点所要求的),请使用引号{'on':'true'}

答案 3 :(得分:0)

从请求 2.4.2 开始,您可以像这样使用 json parameter,而不是使用 data 参数传入负载:

payload = {'on': True}
requests.put(url, json=payload)

并且请求将被正确格式化为 json 负载(即 {'on': true})。