cpprestsdk(casablanca)json value to std :: vector <unsigned char =“”>

时间:2017-06-29 21:50:48

标签: c++ json vector byte casablanca

我正在使用cpprestsdk 来创建http客户端。我需要像这样转换web::json::value

web::json::value obj;
obj[U("1")] = web::json::value(U("123"));
obj[U("2")] = web::json::value(U("321"));

std::vector<unsigned char>

为了提出要求

web::http::http_request req(method);
req.set_body(data); <<-- data == std::vector<unsigned char>

并发送到服务器。我知道如何发送web::json::valueutility::string_t但是有字节向量的问题。 所以我的问题是如何将 web::json::value 转换为 std::vector<unsigned char>。感谢。

1 个答案:

答案 0 :(得分:0)

首先,您确定需要转换吗?文档说json :: value有一个set_body重载。

如果是,那么你可以转换为utf-8字符串(这就是set_body中的代码所做的那样),然后复制到向量。

auto text = utility::conversions::to_utf8string(obj.serialize());

std::vector<unsigned char> data(text.size());
std::transform(text.begin(), text.end(), data.begin(),
    [](char ch)
{
    return static_cast<unsigned char>(ch);
});