【问题标题】:Convert std::vector to JSON using CPPREST-SDK使用 CPPREST-SDK 将 std::vector 转换为 JSON
【发布时间】:2017-04-18 18:30:29
【问题描述】:

目前我正在开发一个 c++ 项目,使用 CPPRESTSDK(又名卡萨布兰卡)编写 API 的服务器端。
cpprestsdk 库中已经实现了序列化值,例如 int、double 等。

我现在想问一下,有没有什么方法可以在客户端将std::vector序列化为json::value,然后在服务器端发起请求然后反序列化?
比如:

    http_client client(U("http://localhost"));
    json::value jsonVector(std::vector);
    make_task_request(client, methods::POST, jsonVector)

提前感谢您所做的一切!

【问题讨论】:

    标签: c++ json cpprest-sdk


    【解决方案1】:

    向量序列化:

        std::vector<int> someVector;
        web::json::value json;
    
        std::vector<value> array;
    
        if (someVectory.size()) {
            for (auto num : someVector) {
                array.push_back(value(num));
            }
    
            json["yourKey"] = value::array(array);
        }
    

    如果您不需要将数组推送到容器对象中,则只需使用 value::array(array) 即可将 std::vector 转换为数组。

    要反序列化,假设您在array 中有一个已知数组,那么:

        std::vector<int> intVector;
        for (auto it=array.cbegin();it!=array.cend();++it) {
            intVector.push_back(it->as_integer());
        }
    

    【讨论】:

    • 您也可以通过迭代器使用其构造函数反序列化为 std::vector<:json::value>,即:std::vector vec(array.cbegin(), array.cend());.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2016-03-31
    • 2020-06-20
    相关资源
    最近更新 更多