转换的javascript JSON对象字符串
问题描述:
我建设有龙卷风的WebSocket和龙卷风的WebSocket网站接受这种类型的JSON:转换的javascript JSON对象字符串
{"key1":1,"key2":2,"key3":3}
我想papulate在JSON元素属性,并将其发送给WebSocket的。我的javascript:
$(".send").click(function(evt){
evt.preventDefault();
var command = $(this).data();
console.log(command);
ws.send(command);
});
命令是JSON,但我的WebSocket不接受它,并抛出错误,当我尝试
#python
json_data = json.loads(message)
错误:
03-02 18:09 tornado.application ERROR Uncaught exception in /ws
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/tornado/websocket.py", line 417, in _run_callback
callback(*args, **kwargs)
File "/var/www/scripts/py/realtime.py", line 102, in on_message
kk = json.loads(message)
File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
我想这是因为我不需要发送一个json对象,只需要一个像这样的语法的字符串?也许我错了,我不知道。我可以将我的$(this).data();
json转换成上面的语法吗?还是从$(this).data();
生成一个字符串会更好?如果是,怎么办?
答
@Duncan Tidd是对的。我只是需要把它串起来。
//html
<button key1="1"
data-key2="2"
data-key3="3"
data-key4="4"
type="button"
class="send btn btn-danger btn-lg">
<span class="glyphicon glyphicon-off"></span></button>
//javascript
$(".send").click(function(evt){
evt.preventDefault();
var command = JSON.stringify($(this).data());
console.log(command);
ws.send(command);
});
//console
{"key1":"1","key2":2,"key3":3,"key4":4}
当不带参数调用['.data()'](http://api.jquery.com/data/)时,它会返回一个包含所有'data- *'属性的对象。而一个对象不是JSON。 – Andreas
你可以'JSON.stringify'吗? –
*“command is json”* ....不,它不是。你混淆了JavaScript对象和JSON是 – charlietfl