2017-09-21 47 views
-1

我有一個簡單的Python龍捲風Websockets服務器,接收來自JavaScript客戶端的消息。我試圖發送JSON數據,我發現的唯一解決方案是將Json對象轉換爲字符串Json,然後發送,另一方面通過服務器將字符串解析回Json。這裏是我的JSON文件:在Websockets上發送JSON

{ 
    "events": [ 
    { 
     "id": 0, 
     "new": { 
     "description": "blabla bla keyyys", 
     "keys": [ 
      "keyyys", 
      "key " 
     ], 
     "start": "2.000000", 
     "end": "7.000000", 
     "priority": "normal" 
     } 
    }, 
    { 
     "id": 1, 
     "new": { 
     "description": "anything key ", 
     "keys": [ 
      "keyyys", 
      "key " 
     ], 
     "start": "0.761077", 
     "end": "10.026667", 
     "priority": "high" 
     } 
    } 
    ] 
} 

之前,我把它我的另一個元素添加到JSON:

var messageValue = {}; 
var sendings; 
messageValue["messageType"] = "mainfest"; 
$.getJSON("file.json", function(json) { 
    messageValue["data"]= json; 
    console.log(messageValue); 
    sendings = jsonToStringConvertor(messageValue); 
    }); 

var socket = new WebSocket('ws://localhost:9000/'); 

socket.onopen = function(event){ 
    socket.send(sendings); 
} 

。 。

function jsonToStringConvertor(obj) 
{ 
var re = JSON.stringify(obj); 
return re; 
} 

我可以從服務器接收郵件並打印: enter image description here

到目前爲止好。但是當我嘗試解析返回的Json這樣

JsonFormattedMessage = json.loads(message)[0] 

我得到這個錯誤:

ERROR:tornado.application:Uncaught exception in/
Traceback (most recent call last): 
    File "/usr/local/lib/python3.4/dist-packages/tornado/websocket.py", line 494, in _run_callback 
    result = callback(*args, **kwargs) 
    File "index.py", line 27, in on_message 
    JsonFormattedMessage = json.loads(message)[0] 
KeyError: 0 
+3

你是什麼意思'json.loads(message)[0]'?此消息絕對是字典,但不是列表。 – Sraw

回答

1

我認爲該消息是不是一個名單,但JSON字符串本身。所以你試圖訪問一個字符串的索引,它不存在。試試在json.loads函數中加載字符串:json.loads(message)

+0

很簡單!謝謝 – Hussein