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

Eri*_*agt 12 python rest python-requests

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

{ 'on': true }
Run Code Online (Sandbox Code Playgroud)

这样做:

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

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

NameError: name 'true' is not defined
Run Code Online (Sandbox Code Playgroud)

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

GP8*_*P89 17

您需要对它进行json编码才能将其转换为字符串.

import json 
payload = json.dumps({"on":True})
Run Code Online (Sandbox Code Playgroud)


jac*_*314 6

从requests 2.4.2开始,您可以像这样data使用参数,json而不是通过参数传入payload :

payload = {'on': True}
requests.put(url, json=payload)
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

  • 那是行不通的。我希望有效负载为 {'on':true}。这会将有效负载转换为 {'on':True},不幸的是,这不起作用。 (4认同)