我在websocket上搜索一些数据,这些数据将采用以下格式:
'{"mode": "test", "code": "' + editor.getValue() + '", "testTeam": "basic"}'
用户将编写一些代码,然后我们将在沙箱中运行。
当我使用data = JSON.parse(message);
解析数据时,如果它获得字符*星号,则会崩溃。
*有什么特别之处让它崩溃?我只是删除它们但会破坏代码中的用户注释。
答案 0 :(得分:1)
而不是:
'{"mode": "test", "code": "' + editor.getValue() + '", "testTeam": "basic"}'
使用它:
JSON.stringify({mode: "test", code: editor.getValue(), testTeam: "basic"})
拥有正确的JSON字符串。
可能发生的事情是editor.getValue()
包含引号或换行符,而您没有正确转义它们。
这只是猜测,因为在解析之前你没有提供message
的实际例子,但是你不应该直接用字符串连接编写JSON。使用JSON.stringify()
将JavaScript对象序列化为JSON。
同时始终将JSON.parse()
和JSON.stringify()
放在try
/ catch
内以避免因输入错误而导致崩溃,或使用类似tryjson
的模块执行此操作你:
JSON.parse()
和JSON.stringify()
都可以抛出异常。