2013-07-31 95 views
6

我有一个非常简单的问题,但我无法弄清楚如何去做。我的问题是,我想使用Python和请求发送以下有效载荷:使用python'requests'发送JSON布尔值

{ '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 

发送真正“真”不是由我的服务器接受,所以这不是一个 选项。任何人的建议?谢谢!

+3

TRUE;对Python是用大写的“T” :) – GP89

+2

嗯,这是TRUE;在Python ... – lunaryorn

+0

我知道这是真的。但是当我把'True'放在那里时,有效载荷将是“{'on':True}”。我希望它是“{'on':true}” –

回答

12

你需要JSON编码它得到它的字符串。

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

应该是{ '上':TRUE},大写字母T

+0

这不起作用。我希望有效载荷是{'on':true}。这将会把有效载荷变成{'on':True},这很不幸不起作用。 –

+0

这是因为您需要使用json转储字典。例如,当你有payload = {“on”:True}时,执行json.dumps(payload) –

+0

传递一个合适的布尔对象帮助我们,例如True/False –