javascript - 通过网络发送的字符串化 Json 无法正确解析

标签 javascript json typescript websocket

我尝试使用typescript(在nodejs中运行)实现一个websocket服务器。

ws.on('message', (msg: string) => {
        console.log("got message:" + msg);
        const m = JSON.parse(msg);
        console.log(m);
        console.log(m.a);
}

在另一端,我使用 Angular 的 webSocket 客户端发送数据(使用网络浏览器),

socket.next( JSON.stringify({a: "123", b:"456"}) )

打印输出为

got message:"{\"a\":\"123\",\"b\":\"456\"}"
{"a":"123","b":"456"}
undefined

解析后的对象不包含成员a(使用m[“a”]也是未定义的)。

但是,如果我只写一个简单的javascript,

    const msg = "{\"a\":\"123\",\"b\":\"456\"}"
    const m = JSON.parse(msg);
    console.log(m);
    console.log(m.a);

我会得到结果:

{ a: '123', b: '456' }
123

json解析有问题吗?谢谢。

最佳答案

因为你在某个地方再次将其字符串化,

如果你console.log(typeof m)你会得到'string'

let x = JSON.stringify({a: "123", b:"456"})
console.log(JSON.parse(x).a)
let y = JSON.stringify(x)
console.log(JSON.parse(y).a)

所以只能使用socket.next({a: "123", b:"456"})

关于javascript - 通过网络发送的字符串化 Json 无法正确解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57356118/

相关文章:

javascript - 如何禁用 Angular Material Stepper 中的步骤?

javascript - 映射并返回被视为对象的 JSX

javascript - 对象数组中的重复项

android - 上传图片路径到服务器android json

javascript - 带有引号的 JSON 对象键 - 如何实现?

javascript - jQuery在输入标签中推送多个值

typescript - 在 TypeScript 中将类函数作为参数传递并引用静态成员

javascript - Angular .js :68 Uncaught Error: [$injector:unpr] Unknown provider: pendingRequestsProvider <- pendingRequests <- $http <- $templateRequest <- $compile

javascript - 如何让我的 "alert bar"下推我网站的所有内容?

JavaScript 对象 : is it not OK to redefine the prototype?