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::object
的 operator<<
以恰好与 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 中没有等效项的内容(例如,扩展类型)。
我的代码如下所示:
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::object
的 operator<<
以恰好与 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 中没有等效项的内容(例如,扩展类型)。