首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中解析json messagepack数据

在javascript中解析json messagepack数据
EN

Stack Overflow用户
提问于 2015-11-02 22:56:36
回答 2查看 942关注 0票数 0

我在客户端使用kawanet/msgpack-lite (javascript)和msgpack/msgpack-c (C++)将json数据发送到websocketpp服务器,并使用messagepack和messagepack对其进行解析。这样就可以了。

但显然我使用messagepack的方式是错误的,因为我不能正确解析返回的数据。

服务器:

代码语言:javascript
复制
if (jdata["type"] == "msg") {
    std::stringstream buffer;
    std::string clientmsg = jdata["data"];
    jdata["cnt"] = clientmsg.length();
    msgpack::pack(buffer, jdata.dump());
    size_t plen = buffer.tellp();
    msg->set_payload(&buffer, plen);
    m_server.send(hdl, msg);
}

客户端:

代码语言:javascript
复制
reader.onload = function (e) {
    console.log("FileReader.onload(): " + reader.result);
    var decoded_message = msgpack.decode(reader.result);
}
reader.readAsText(e.data);

它在msgpack.decode()上失败,因为

代码语言:javascript
复制
Uncaught Error: Invalid type: 0xh

在set_payload()中将json作为字符串发送时

代码语言:javascript
复制
msg->set_payload(jdata.dump());

它传输得很好

代码语言:javascript
复制
FileReader.onload(): {"cnt":4,"data":"test","type":"msg"}
EN

回答 2

Stack Overflow用户

发布于 2015-11-05 20:06:53

std::stringstream的地址不是指向其基础缓冲区的指针。

试试:msg->set_payload(buffer.str());

票数 0
EN

Stack Overflow用户

发布于 2017-01-02 04:11:56

如果有帮助的话: nlohmann/json现在支持MessagePack (和CBOR),所以你现在可以使用nlohmann/json完全实现你的场景。有关示例,请参阅https://github.com/nlohmann/json#binary-formats-cbor-and-messagepack

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33480492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档