C++中如何将动态类型未知的Msgpack::object转换为JSON字符串
实现方案
msgpack 库本身已经内置了无需感知动态类型的 msgpack::object 转 JSON 字符串能力,直接调用官方提供的接口即可,不需要自行判断元素类型。
引入必要头文件
首先在代码头部添加对应依赖头文件:
#include <msgpack/json.h>
补全转换逻辑
在你原有代码的注释位置直接调用 msgpack::to_json 接口即可完成转换:
msgpack::unpacked msg; msgpack::unpack(msg, args.data(), args.size()); msgpack::object obj = msg.get(); // 转换为JSON字符串 std::string json_str; msgpack::to_json(json_str, obj);
注:该接口在 msgpack-c v1.4.0 及以上版本提供,如果你使用的是更早的版本,可以手动实现 visitor 逻辑完成转换:先判断 obj.type 的枚举值(覆盖 nil、布尔、整数、浮点数、字符串、数组、映射表等所有msgpack支持的类型),对应不同类型做字符串拼接,嵌套的数组和映射表递归处理即可。
内容的提问来源于stack exchange,提问作者hayatisevenbirisi
相关产品推荐
相关产品推荐

