msgpack:C++;和爪哇 我有两个应用程序(一个用C++编写,另一个用java编写)。我使用 MSGPACK/EXEC>将C++类打包为二进制格式。然后我将其发送到Java端。我想知道我是否用java(也使用msgpack)解包了这个消息,我是否得到了正确的java类对象

msgpack:C++;和爪哇 我有两个应用程序(一个用C++编写,另一个用java编写)。我使用 MSGPACK/EXEC>将C++类打包为二进制格式。然后我将其发送到Java端。我想知道我是否用java(也使用msgpack)解包了这个消息,我是否得到了正确的java类对象,java,c++,msgpack,Java,C++,Msgpack,考虑以下示例: // 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

考虑以下示例:

// 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是一种高效的二进制序列化格式。它允许您在多种语言(如JSON)之间交换数据


所以答案是“是的,你的java对象应该被正确地反序列化”

@PetterFriberg我想你是对的,我在这一点上错了,应该付出更大的代价attention@VasilyAlexeev没问题,继续复习,如果你有疑问,你可以随时通过考试