Как перебрать содержимое JSON сообщения http_request?
Я хочу обработать объект JSON, который исходит из тела запроса. Для этого я попытался с помощью следующего кода. Я использовал message.extract_json(), чтобы получить значение JSON из тела сообщения запроса. Но я не могу повторить это. Всегда testDataObj пусто. Но я уверен, что мое сообщение с запросом содержит объект json, потому что я могу напечатать его в виде строки, как показано здесь. Как это решить? Как это перебрать?
void WsListener::handle_put(http_request message)
{
auto content_type = message.headers().content_type();
if (0 != content_type.compare(L"application/json"))
{
// Short-circuit the HTTP request: construct a response object with status code = BadRequest
message.reply(status_codes::BadRequest, U("try again"));
}
else
{
pplx::task<utility::string_t> body_string = message.extract_string();
std::string jsonstr = utility::conversions::to_utf8string(body_string.get());
cout << jsonstr << endl;
// Content type is JSON, so call the next pipeline stage to send the reques
pplx::task<json::value> body_json = message.extract_json();
try
{
const json::value& testDataObj = body_json.get();
int i = 0;
// Loop over each element in the object.
for (auto iter = testDataObj.as_object().cbegin(); iter != testDataObj.as_object().cend(); ++iter)
{
i++;
std::cout << i << endl;
}
}
catch (const http_exception& e)
{
// Print error.
wostringstream ss;
ss << e.what() << endl;
wcout << ss.str();
}
}
};