我正在使用带有C++的MessagePack,我正在尝试反序列化这个Python映射的等价物:
{'metadata': {'date': '2014-06-25', 'user_id': 501},
'values': [3.0, 4.0, 5.0],
'version': 1}
Run Code Online (Sandbox Code Playgroud)
顶级对象是带有字符串键的映射,但值的类型完全不同.我的代码提前知道对象的结构应该是什么; 我应该能够声明一个整数,然后告诉我的反序列化代码," version键的值是一个整数,所以将该整数的值放入这个内存地址."
问题是我甚至不确定如何达到我的C++代码可以将此结构视为地图的程度.我期待做类似的事情
msgpack::unpacker unpacker;
// ...copy the data into unpacker's buffer...
msgpack::unpacked message;
std::map<std::string, anything> output_map;
unpacker.next(&message);
msgpack::object obj = message.get();
obj.convert(&output_map);
int version_number = output_map.at("version");
Run Code Online (Sandbox Code Playgroud)
有没有可能的类型(anything)在这里工作?MessagePack文档只有一些简单的例子,这篇博文更好,但不包括这个用例.