2013-07-31 88 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 –