为了账号安全,请及时绑定邮箱和手机立即绑定

JSON字符串消息转换成Javascript的对象出错

JSON字符串消息转换成Javascript的对象出错

蓝山帝景 2019-04-19 18:15:52
我在写一个服务,想解决angular本地代理解决跨越问题,但是不知道为什么,在将JSON字符串消息转换成Javascript的对象时出错了。下面时是我的代码 const server = app.listen(8000, "localhost", () => {     console.log("服务器已启动,地址是:http://localhost:8000"); }); const subscriptions = new Map<any,number[]>(); const wsServer = new Server({port:8085}); wsServer.on("connection",websocket =>{     websocket.send('这个消息是服务器主动推送的');     websocket.on('message', message => {         let messageObj = JSON.parse(message);  //这里报错了         let productIds = subscriptions.get(websocket) || [];         subscriptions.set(websocket, [...productIds,messageObj.productId]);     }); });当我的angular项目从localhost:4200连接到localhost:8000时报错控制台编译器为vscode
查看完整描述

12 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

可以首先console.log(message);看下它的值是什么,如果返回的是json对象,就不需要进行转换了,直接使用。如果是数组那你先转换成json字符串JSON.stringify()之后然后在进行JSON.parse(); 说到底还是得看返回的massage是什么


查看完整回答
反对 回复 2019-05-13
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

编码的问题,你的中文编码识别不了,需要转换中文编码


查看完整回答
反对 回复 2019-05-13
?
慕斯709654

TA贡献1840条经验 获得超5个赞

你可以用英文试一下,转为UTF-8或者Unicode的编码


查看完整回答
反对 回复 2019-05-13
?
Helenr

TA贡献1780条经验 获得超4个赞

你这返回的应该直接就是一个字符串类型,你可以在后台将他用JSONObject来包装一下,或者在前台直接用这个就可以


查看完整回答
反对 回复 2019-05-13
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

字符编码需要注意下,字符串需要转换的


查看完整回答
反对 回复 2019-05-13
?
POPMUISE

TA贡献1765条经验 获得超5个赞

是不是json没有序列化的问题,需要把Json格式序列化为json对象结构体


查看完整回答
反对 回复 2019-05-13
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

json不合法,看下具体json便知


查看完整回答
反对 回复 2019-05-13
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

websocket.send('这个消息是服务器主动推送的');, 把这个去掉就好用了


查看完整回答
反对 回复 2019-05-13
  • 12 回答
  • 0 关注
  • 892 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信