2013-07-31 7 views
6

भेजने के लिए पायथन 'अनुरोध' का उपयोग करना मुझे एक बहुत ही सरल सवाल है, लेकिन मैं इसे समझने के तरीके से नहीं समझ सकता। ,जेएसओएन बूलियन

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

काम नहीं करता क्योंकि मैं निम्नलिखित त्रुटि मिलती है:

{ 'on': true } 

इस तरह कर रहा: समस्या मेरे पास है कि मैं पायथन और अनुरोध का उपयोग कर निम्नलिखित पेलोड भेजना चाहते है

NameError: name 'true' is not defined 

भेजा जा रहा है सच रूप 'सही', अपने सर्वर द्वारा स्वीकार नहीं किया जाता है, ताकि एक नहीं है विकल्प। कोई भी सुझाव है? धन्यवाद! राजधानी टी

+3

'अजगर पर TRUE' एक पूंजी 'टी' :) – GP89

+2

Uhm, यह अजगर में' TRUE' ... – lunaryorn

+0

है मुझे पता है कि यह सच है के साथ लिखा जाता है। लेकिन जब मैं वहां 'सत्य' डालता हूं, तो पेलोड "{'पर': True}" होगा। मैं चाहता हूं कि यह "{'' ': true}" –

उत्तर

12

आप json करने की जरूरत है यह सांकेतिक शब्दों में बदलना एक स्ट्रिंग के लिए इसे पाने के लिए:

1

{यह सच है 'पर'} होना चाहिए।

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

यह काम नहीं करता है। मैं पेलोड को {'चालू' होना चाहता हूं: सत्य}। यह पेलोड को {'on': True} में बदल देगा, जो दुर्भाग्य से काम नहीं करता है। –

+0

ऐसा इसलिए है क्योंकि आपको जेसन का उपयोग करके शब्दकोश डंप करने की आवश्यकता है। उदाहरण के लिए, जब आपके पास payload = {"on": True} है, तो json.dumps (पेलोड) –

+0

उचित बूलियन ऑब्जेक्ट पास करने में हमारी सहायता की गई है यानी सही/गलत –