2017-09-21 19 views
-1

私は単純なPythonの竜巻のWebソケットサーバーを持っており、JavaScriptクライアントからメッセージを受け取ります。私はJSONデータを送信しようとしていますが、私が見つけた唯一の解決策はJsonオブジェクトを文字列Jsonに変換して送信し、もう一方ではサーバー上で文字列を解析してJsonに返します。Webソケットで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); 
} 

ここに私のJSONファイルです。 。

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

私は、サーバーからメッセージを受信し、それを印刷することができます: enter image description here

これまでのところは良いです。私は、メッセージがリストではありませんと思いますが、JSON文字列自体

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

:私はこの

JsonFormattedMessage = json.loads(message)[0] 

のように戻ってJSONに解析しようとするが、私はこのエラーを得ました。したがって、文字列のインデックスにアクセスしようとしていますが、存在しません。 json.loads関数で文字列をロードしてみてください:json.loads(message)

+0

これは簡単でした!ありがとう – Hussein

関連する問題