2017-09-21 39 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