问题标签 [msgpack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 用户定义的类序列化、C++ 和 msgpack
我很新尝试msgpack。我需要序列化一个包含指针(内部树、哈希等)和一些基本类型属性的对象(用户定义类的实例)。
到目前为止,我可以做 msgpack.org wiki 的快速示例中所做的事情,只需将类序列化为 a msgpack::sbuffer
,然后读取缓冲区以进行反序列化。
但是现在,我想将该缓冲区发送到一个文件,或者将序列化结果发送到一个文件,然后对其进行反序列化。
谁能给我一些关于如何做的提示?我浏览和阅读足以厌倦它:)
我的代码如下所示:
谢谢大家!
最好的,
Luchux。
serialization - 高性能实体序列化:BSON vs MessagePack(vs JSON)
最近我发现了MessagePack,这是一种替代谷歌协议缓冲区和JSON的二进制序列化格式,它也优于两者。
还有MongoDB 用于存储数据的BSON序列化格式。
有人可以详细说明BSON 与 MessagePack 的区别和劣势吗?
只是为了完成高性能二进制序列化格式的列表:还有Gobs 将成为 Google 的 Protocol Buffers 的继任者。然而,与所有其他提到的格式相比,这些格式与语言无关并且依赖于Go 的内置反射,还有 Gobs 库至少适用于 Go 以外的其他语言。
objective-c - Objective-C 的 MessagePack 实现
是否有针对 Objective-C的MessagePack协议的实现?
如果没有,是否有将 C 实现桥接到 Objective-C 类型的示例?
c++ - MsgPack 中的 free()/delete 不匹配
我尝试在我的程序中使用 Msgpack。有人可以帮助我提供来自 msgpack wiki 的下一个示例(流式传输功能):http ://wiki.msgpack.org/pages/viewpage.action?pageId=1081387并提供更正确的使用此库和流式传输功能的示例。
Valgrind 说它有下一个错误:
http - msgpack 的 MIME 类型?
msgpack似乎是一种非常快的数据序列化格式,即使是非常新的格式。它有公认的 MIME 类型吗?如果没有,在此期间应该使用什么?
c++ - C++ MsgPack:链接器错误
我正在尝试编译消息包(http://msgpack.org/)示例代码并不断收到这些我无法深入了解的错误:
g++ -o"MsgPack2" ./src/MsgPack2.o -lmsgpack -lmsgpackc
未定义的
msgpack::rpc::server::listen(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)' ./src/MsgPack2.o: In function
循环引用:/usr/local/include/msgpack/rpc/loop.h:30:未定义mp::wavy::loop::loop()' ./src/MsgPack2.o: In function
的引用基数:/usr/local/include/msgpack/rpc/server.h:59:未定义的msgpack::rpc::server::server(msgpack::rpc::loop)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference to
msgpack引用::rpc::server::serve(msgpack::rpc::dispatcher*)' /usr/local/include/msgpack/rpc/server.h:59: 未定义对msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function
~base'的引用:/usr/local/include /msgpack/rpc/server.h:64:未定义对msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function
myserver::dispatch(msgpack::rpc::request)' 的引用:/mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:14 : 对msgpack::rpc::request::method()' /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:18: undefined reference to
msgpack::rpc::request::params()' 的 未定义引用./src/MsgPack2.o: 在函数msgpack::rpc::loop_util<msgpack::rpc::session_pool>::run(unsigned long)': /usr/local/include/msgpack/rpc/loop_util.h:34: undefined reference to
msgpack::rpc::session_pool::get_loop()' /usr/local/include/msgpack/rpc /loop_util.h:34:未定义的引用mp::wavy::loop::run(unsigned long)' ./src/MsgPack2.o: In function
void msgpack::rpc::request::call(int&, msgpack::type::nil&)': /usr/local/include/msgpack/rpc/request.h:119: 未定义对msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to
msgpack::rpc::的引用request::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: undefined reference tomsgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function
void msgpack::rpc::request::call(msgpack::type::nil&, unsigned char& )': /usr/local/include/msgpack/rpc/request.h:119: 未定义对msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to
msgpack::rpc::request::get_msgid() 的引用 const' /usr/local/include/msgpack/rpc/request. h:125:对msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function
void msgpack::rpc::request::call、std::allocator 的未定义引用 >(msgpack::type::nil&, std::basic_string, std::allocator >&)': /usr/local/include/msgpack/rpc/request.h:119: 未定义对
msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to
msgpack::rpc::request的引用::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: 未定义引用msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function
__shared_count': /usr/include/c++/4.5/tr1/shared_ptr.h:121: 未定义引用mp::wavy::loop::~loop()' ./src/MsgPack2.o: In function
std::tr1::_Sp_deleter::operator()(mp::wavy::loop*) const': /usr/include/c++/4.5/tr1/shared_ptr.h:99: 未定义引用`mp::wavy ::loop::~loop()' collect2: ld 返回 1 退出状态 make: * [MsgPack2] 错误 1
这是代码:
如果有人有任何想法,将不胜感激。
提前谢谢了,
c - 传递给“msgpack_pack_int()”宏的计数器变量不增加
我有一个非常奇怪的问题,试图运行这个使用zmq和msgpack的非常简单的C 程序。
没有问题server.c
,但是clinet.c:39
有这个msgpack_pack_int (&mpkg, i);
,并且 的值i
似乎被拾取为0
并且在每次迭代中都不会改变。我尝试了很多不同的事情(例如,创建一个指向
i
并使用它的指针,还尝试将其拆分为一个函数等),但似乎没有任何帮助。我可以看到这msgpack_pack_int()
是一个宏,但为什么它会引入这种行为,我能做些什么来克服它?是否有一个标志可以改变这种宏的行为(因为我看到它扩展为内联函数)......我已经尝试过-Werror -Wall
,使用gcc
and clang
,也没有任何警告出现;(*
我尝试调试它并按i
预期递增。
我什至试过这个,无论如何它都会做同样的事情:
我什至尝试过一些本应不同的东西,但这里也没有运气 -
谁能明白为什么会这样?
更新 1:我还重新编译了 msgpack 库本身,没有优化标志,这也没有改变行为。
更新 2:从 git repo 安装了 msgpack,我仍然遇到同样的问题。
java - 在 Android 中使用 MessagePack
有人尝试过使用MessagePack
Android 应用程序吗?
可能吗?我尝试使用 Jarmsgpack-java
并收到以下异常:
我使用的代码非常简单
我的目录中有javassist.jar
,msgpack-0.5.2.jar
和。 slf4j-api-1.6.2.jar
slf4j-jdk14-1.6.2.jar
lib
在我的服务器应用程序中,此代码适用于相同的库。
javascript - msgpack 的 Sinatra 二进制返回——字符集问题/字符在某处被转换?
我目前正在尝试从 ruby sinatra 服务返回 msgpack http://msgpack.org/并使用 javascript 解析它。我正在使用此处找到的 javascript 库:https ://github.com/uupaa/msgpack.js/ (尽管我认为这与这个问题无关)。
我有一个使用 msgpack gem 执行以下操作的 sinatra 服务:
我有 javascript 读取如下:
问题是当我取回数据时,许多字符已从其服务器端版本转换为0xfffd
.
然后我尝试了两种变体:
和
在服务器端。前者没有改变任何东西,但后者更接近了,除了一个例外,大部分信息都保持不变:第一个字符从转换0x82
为0x201a
.
我怀疑有一个字符集/内容类型的组合可以解决这个我还没有尝试过的问题。我也总是可以退回到 Base64,但我想先了解如何在没有 Base64 的情况下让它工作。