Pythonで単純なWebsocketsサーバーを使用していて、Androidアプリケーションクライアントからメッセージを受信しましたが、JSONでクライアントからメッセージペイロードを作成しようとしましたが、それはString内にあるときだけ動作します。私が見つけた 一つの解決策は、JSON形式のメッセージ文字列が、維持することです:PythonでJSON形式の文字列を読む
try {
json.put("name", "Jack");
json.put("age", "24");
message = json.toString(2);
} catch (JSONException e) {
e.printStackTrace();
}
webSocket.send(message);
JavascriptをJSON.stringify(message)
に触発され、私は、サーバー上のメッセージを印刷し、
私の質問をフォーマットしているように見えます受信時にサーバー上のJSONに戻すにはどうすればよいですか?
私はこの方法で試してみました:Pythonの:
def on_message(self,message):
data = json.loads(message)
self.write_message(data['name'])
を、私はこのエラーを得た:
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 24, in on_message
data = json.loads(message)
File "/usr/lib/python3.4/json/__init__.py", line 318, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.4/json/decoder.py", line 343, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.4/json/decoder.py", line 361, in raw_decode
raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)
['' json''](https://docs.python.org/3/library/json.html)のドキュメントでは、jsonのエンコードとデコードの例を示しています。つまり、jsonから文字列への変換、またはその逆の例です。 –
'json.loads()'に与えられた 'message'の値を表示すると非常に便利です。 – norok2
実際に関数内から印刷しようとするべきです。 'message'の空の文字列値で呼び出すようです。 たとえば、 'json.loads( '')'はインストール時に非常に似たエラーを出します。 – norok2