json cpprestsdk copy json object - функция разбора, не делающая глубокую копию - PullRequest
0 голосов
/ 13 сентября 2018

У меня проблемы с сохранением ответа JSON с помощью json cpprestsdk, чтобы я мог передать его обратно вызывающей функции.Кажется, что функция parse () делает мелкую копию, а не глубокую копию.Может кто-нибудь помочь мне с методом, который я должен использовать, чтобы сделать глубокую копию возвращенных результатов?

Заранее спасибо.

functionA()
{

   web::json::value myJsonObjSv;

   http_client client(L"http://url.com:8080/getdata");

   return client.request(methods::GET).then([](http_response response) -> pplx::task<json::value> {

       if(response.status_code() == status_codes::OK) {
           return response.extract_json();
       }

   return pplx::task_from_result(json::value()); }).then([&myJsonObjSv](pplx::task<json::value> previousTask) {
        try {
             // capture json response to json_resp
             json::value const resp = previousTask.get();

             // Now save the JSON object to return from this function
             myJsonObjSv = json::value::parse(resp.serialize());

             // This statement displays the contents of myJsonObjSv to be the same as resp
             wcout << "myJsonObjSv[" myJsonObjSv.serialize() << "]" << endl;
         }
        catch( const http_exception& e) {
             // print error
         }
    });

    // This statement to display the contents of myJsonObjSv crashes since there was a shallow copy made rather than a deep copy
    wcout << "myJsonObjSv[" myJsonObjSv.serialize() << "]" << endl;

}
...