2013-10-11 64 views
0

我有Python中的服務器是在以下格式recieving數據:ERROR在python服務器讀取multidict?

MultiDict([('JSONdata', u'{"SMS":[{"inbox":[{"body":"BACKUP *qqqqq*","phone":"+920000000"},{"body":"BACKUP *qqqqq*","phone":"+920000000"},{"body":"BACKUP *qqqqq*","phone":"+920000000"},{"body":"BACKUP *qqqqq*","phone":"+920000000"},{"body":"BACKUP *qqqqq*","phone":"+920000000"},{"body":"BACKUP *qqqqq*","phone":"+920000000"},{"body":"BACKUP *qqqqq*","phone":"+920000000"},{"body":"BACKUP *qqqqq*","phone":"+920000000":"BACKUP *qqqqq*","phone":"+920000000"},{"body":"BACKUP \\"qqqqq\\" ","phone":"+920000000"},{"body":"BACKUP \\"qqqqq\\" ","phone":"+920000000"},{"body":"BACKUP \\"qqqqq\\" ","phone":"+920000000"},]},{"sent":[]}]}')]) 

我寫了下面的代碼中的JSONObject獲取它,並將其轉換:

request.POST.getall('JSONdata') 
    incomingData = json.load(str) 

,但我recieving的錯誤:

Traceback (most recent call last): 
    File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run 
    self.result = application(self.environ, self.start_response) 
    File "/home/anam/pyckenv/local/lib/python2.7/site-packages/pyramid/router.py", line 251, in __call__ 
    response = self.invoke_subrequest(request, use_tweens=True) 
    File "/home/anam/pyckenv/local/lib/python2.7/site-packages/pyramid/router.py", line 227, in invoke_subrequest 
    response = handle_request(request) 
    File "/home/anam/cdsr/myproject/auth.py", line 50, in auth_request 
    return handler(request) 
    File "/home/anam/pyckenv/local/lib/python2.7/site-packages/pyramid_debugtoolbar/toolbar.py", line 130, in toolbar_tween 
    return handler(request) 
    File "/home/anam/pyckenv/local/lib/python2.7/site-packages/pyramid/tweens.py", line 21, in excview_tween 
    response = handler(request) 
    File "/home/anam/pyckenv/local/lib/python2.7/site-packages/pyramid_tm/__init__.py", line 82, in tm_tween 
    reraise(*exc_info) 
    File "/home/anam/pyckenv/local/lib/python2.7/site-packages/pyramid_tm/__init__.py", line 63, in tm_tween 
    response = handler(request) 
    File "/home/anam/pyckenv/local/lib/python2.7/site-packages/pyramid/router.py", line 161, in handle_request 
    response = view_callable(context, request) 
    File "/home/anam/pyckenv/local/lib/python2.7/site-packages/pyramid/config/views.py", line 347, in rendered_view 
    result = view(context, request) 
    File "/home/anam/pyckenv/local/lib/python2.7/site-packages/pyramid/config/views.py", line 493, in _requestonly_view 
    response = view(request) 
    File "/home/anam/cdsr/myproject/controllers/controllers.py", line 44, in data 
    incomingData = json.load(str) 
    File "/usr/lib/python2.7/json/__init__.py", line 274, in load 
    return loads(fp.read(), 
AttributeError: 'list' object has no attribute 'read' 
QMobile-A8 - - [11/Oct/2013 08:24:08] "POST /data HTTP/1.1" 500 59 

我已經嘗試了不同的方法來解決它,但nothings工作..?有人能告訴我我做錯了什麼嗎?

回答

0

Documentationload功能

Deserialize a .read()-supporting file-like object containing a JSON document

,並給它字符串而不是。

你需要loads(LOAD字符串)函數json模塊

+0

感謝..但這樣做的錯誤後改爲...文件「/usr/lib/python2.7/json/decoder.py」,行366,在解碼 OBJ,結束= self.raw_decode(S,IDX = _W(S,0).END()) 類型錯誤:預期的字符串或緩衝區 – Ifrah

+0

編輯的問題,以顯示裏面是什麼'MultiDict'實例,請與是什麼'request.POST.getall(「JSONdata」)'返回 – alexvassel

+0

我添加了完整的傳入multidict – Ifrah