Как перебрать содержимое 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();
        }
    }
};

0 ответов

Другие вопросы по тегам