Msgpack::object 到 JSON 字符串 C++

Msgpack::object to JSON string C++

我的代码如下所示:

msgpack::unpacked msg;
msgpack::unpack(msg, args.data(), args.size());

msgpack::object obj = msg.get();

// How to convert "obj" to JSON string format here?

我想将该对象转换为 JSON 字符串。我该如何执行?顺便说一句,我不知道对象的元素类型,它们是动态设置的。

msgpack::objectoperator<< 以恰好与 JSON 匹配的人类可读格式输出 MessagePack 对象。您可以使用 std::stringstream 将该输出存储在字符串中。

#include <iostream>
#include <msgpack.hpp>
#include <sstream>

unsigned char a[] = {0x82,0xa7,'c','o','m','p','a','c','t',0xc3,0xa6,'s','c','h','e','m','a',0};

int main() {
        msgpack::unpacked msg;
        msgpack::unpack(msg, (char*)a, sizeof(a));

        msgpack::object obj = msg.get();

        std::stringstream ss;
        ss << obj;
        std::string demo = ss.str();

        std::cout << "As string: " << demo << "\n";
}

这输出:

As string: {"compact":true,"schema":0}

为了使其正常运行,您的 msgpack::object 不应包含任何在 JSON 中没有等效项的内容(例如,扩展类型)。

Reference

Implementation