2017-04-18 3 views
1

Im Moment arbeite ich an einem C++ Projekt, schreiben die Server-Seite einer API mit der CPPRESTSDK (a.k.a. Casablanca).
Serialisierung von Werten wie int, double usw. ist bereits in der cpprestsdk-Bibliothek implementiert.Konvertieren von std :: vector zu JSON mit CPPREST-SDK

Ich wollte nun fragen, ob es eine Möglichkeit ist, ein std::vector ein json::value auf dem Client zu serialisiert, einen reqeust machen und es dann auf dem Server Deserialisieren?
Etwas wie:

http_client client(U("http://localhost")); 
    json::value jsonVector(std::vector); 
    make_task_request(client, methods::POST, jsonVector) 

Vielen Dank für alles im Voraus!

Antwort

0

Vektor Serialisierung:

std::vector<int> someVector; 
    web::json::value json; 

    std::vector<value> array; 

    if (someVectory.size()) { 
     for (auto num : someVector) { 
      array.push_back(value(num)); 
     } 

     json["yourKey"] = value::array(array); 
    } 

Wenn Sie nicht das Array in einem Containerobjekt schieben müssen, dann benutzen Sie einfach value::array(array) die die std::vector auf ein Array umwandelt.

deserialisieren, sagen wir, Sie in array eine bekannte Anordnung haben dann:

std::vector<int> intVector; 
    for (auto it=array.cbegin();it!=array.cend();++it) { 
     intVector.push_back(it->as_integer()); 
    } 
+0

Sie auch deserialze in einen _std :: vector kann _ von Iteratoren seine Konstruktor dh : _std :: vector vec (array.cbegin(), array.cend()); _. – Quirysse