我有两个应用程序(一个用 C++ 编写,另一个用 Java 编写)。我使用 msgpack
将 C++ 类打包为二进制格式。然后我将其发送到 Java 端。我想知道如果我在 java 中解压缩此消息(也使用 msgpack
)我是否得到正确的 Java 类对象?
考虑以下示例:
// C++
class Foo
{
public:
// some methods here...
void Pack(uint8_t *data, size_t size);
private:
std::string m1_;
std::string m2_;
int m3_;
public:
MSGPACK_DEFINE(m1_, m2_, m3_);
}
void Foo::Pack(uint8_t *data, size_t size)
{
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, *this);
data = sbuf.data();
size = sbuf.size();
}
Java 方面:
// Java
public class Foo
{
public void Unpack(byte[] raw, Foo obj)
{
MessagePack msgpack = new MessagePack();
try
{
obj = msgpack.read(raw, Foo.class);
// Does obj's m1_, m2_ and m3_ contains proper values from C++ class Foo?
}
catch(IOException ex)
{
// ...
}
}
// ...
private String m1_;
private String m2_;
private int m3_;
}
我不想把 Foo 的成员一个一个打包,因为我有很多。
提前致谢。
最佳答案
正如msgpack网站上所说
MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON.
所以答案是“是的,你的 java 对象应该被正确反序列化”
关于java - msgpack:C++ 和 java 之间的消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13856450/