【问题标题】:Msgpack::object to JSON string C++Msgpack::object 到 JSON 字符串 C++
【发布时间】:2021-08-27 11:07:17
【问题描述】:

我的代码如下所示:

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 字符串。我该怎么做?顺便说一下,我不知道对象的元素类型,它们是动态设置的。

【问题讨论】:

    标签: c++ json msgpack


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-25
      • 2015-05-03
      • 2012-06-06
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      相关资源
      最近更新 更多