cpprestsdk (casablanca) значение json для std::vector‹unsigned char›

Я использую 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"));

to std::vector<unsigned char>

Чтобы поставить его на запрос

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

и отправить на сервер. Я знаю, как отправлять web::json::value и utility::string_t, но у меня проблема с вектором байтов. Итак, мой вопрос заключается в том, как преобразовать web::json::value в std::vector<unsigned char>. Спасибо.


person definename    schedule 29.06.2017    source источник


Ответы (1)


Во-первых, вы уверены, что вам нужно конвертировать? В документах говорится, что существует перегрузка set_body для json::value.

Если да, то вы можете преобразовать в строку 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);
});
person Mercury Dime    schedule 30.06.2017
comment
Звучит как решение. - person definename; 30.06.2017