2016-04-26 4 views
1

Angenommen, ich empfange eine JSON-formatierte Zeichenfolge aus dem Netzwerk und möchte sie in einer Boost-Eigenschaftsstruktur dekodieren. Was ist der beste Weg, das zu tun?Wie dekodiert man eine std :: string formatierte JSON in eine Boost-Property-Struktur?

+0

Können Sie zeigen einen Code, den Sie versucht haben, und vielleicht jemand können Sie von dort helfen. – gottlieb76

+0

Ich bin überrascht, wie ich weiß, Spanisch hat Artikel. – peterh

+0

@peterh gehen für irgendeine Art von Ironie Award, ich sehe :) – sehe

Antwort

1

Für ein einfaches Beispiel zu schaffen, läßt vermuten wir einen String im Code haben die Zeichenfolge darzustellen, dass Sie aus dem Netzwerk mit folgendem Inhalt erhalten werden:

{ 
    "Test": "string", 
    "Test2": 
    { 
     "inner0": "string2", 
     "inner1": "string3", 
     "inner2": "1234" 
    } 
} 

So ist der Code für die Interpretation, dass als ein String ist die folgende:

#include <boost/property_tree/json_parser.hpp> 
#include <iostream> 
#include <sstream> 

int main() 
{ 
    std::stringstream buffer("{ \"Test\": \"string\", \"Test2\": { \"inner0\": \"string2\", \"inner1\": \"string3\", \"inner2\": \"1234\" } }"); 
    std::cout << buffer.str() << std::endl; 

    boost::property_tree::ptree pt; 
    boost::property_tree::json_parser::read_json(buffer, pt); 

    std::string test2_inner0_str = pt.get<std::string>("Test2.inner0"); 
    int test2_inner2_value = pt.get<int>("Test2.inner2"); 

    std::cout << test2_inner0_str << std::endl; 
    std::cout << test2_inner2_value << std::endl; 
} 

Drucke:

Live On Coliru

{ "Test": "string", "Test2": { "inner0": "string2", "inner1": "string3", "inner2": "1234" } } 
string2 
1234 
+0

Ausgezeichnete Probe. +1 – sehe

Verwandte Themen