msgpack: обмен сообщениями между C ++ и Java

У меня есть два приложения (одно написано на 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 один за другим, потому что у меня их много.

Заранее спасибо.

4

Решение

Как сказано на сайте msgpack

MessagePack — это эффективный двоичный формат сериализации. Это позволяет обмениваться данными между несколькими языками, такими как JSON.

Поэтому ответ «да, ваш Java-объект должен быть правильно десериализован»

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]