2016-08-04 65 views
-1

我試圖從一個JSON字符串保存變量作爲不同功能的設置使用,但不幸的是,他們沒有被接受爲我想要的那樣好。這就是烹飪。Python JSON變量不被接受

JSON字符串來通過MQTT像這樣:

def on_message(client, userdata, msg): 
     data = json.loads(msg.payload) 
     camera = picamera.PiCamera() 
     camera.resolution = (2592, 1944) 
     camera.sharpness = data['sharpness'] 
     camera.contrast = data['contrast'] 

然而,當它得到的消息,它的錯誤了:

> File "/usr/local/lib/python2.7/dist-packages/picamera/camera.py", 
> line 2392, in _set_sharpness 
>  "Invalid sharpness value: %d (valid range -100..100)" % value) TypeError: %d format: a number is required, not unicode 

任何想法,爲什麼?我真的不知道爲什麼它與%d來了,而當我打印的數據:

print data['sharpness'] 
>>> 50 

它散發出來的數...

任何幫助真的感謝!

+1

你的JSON包含一個字符串值(' 「50」'),而不是數字。 – RemcoGerlich

+0

'print type(data ['sharpness'])''的結果是什麼? –

+1

'打印類型(數據['sharpness'])''。你可能(也可能不會)感到驚訝。 – DeepSpace

回答

0

int包裹你的價值觀,因爲這些都是unicode格式

def on_message(client, userdata, msg): 
     data = json.loads(msg.payload) 
     camera = picamera.PiCamera() 
     camera.resolution = (2592, 1944) 
     camera.sharpness = int(data['sharpness']) 
     camera.contrast = int(data['contrast'])