Warum speichert der Eigenschaftsbaum von boost write_json alles als Zeichenfolge? Kann man das ändern?

Ich versuche, mit dem Eigenschaftsbaum "boost" write_json zu serialisieren. Er speichert alles als Zeichenfolge. Es ist nicht so, dass die Daten falsch sind, aber ich muss sie jedes Mal explizit umwandeln und ich möchte sie woanders verwenden. (wie in Python oder einer anderen C ++ - JSON-Bibliothek (ohne Boost))

hier ist ein Beispielcode und was ich bekomme, hängt vom Gebietsschema ab:

boost::property_tree::ptree root, arr, elem1, elem2;
elem1.put<int>("key0", 0);
elem1.put<bool>("key1", true);
elem2.put<float>("key2", 2.2f);
elem2.put<double>("key3", 3.3);
arr.push_back( std::make_pair("", elem1) );
arr.push_back( std::make_pair("", elem2) );
root.put_child("path1.path2", arr);

std::stringstream ss;
write_json(ss, root);
std::string my_string_to_send_somewhare_else = ss.str();

undmy_string_to_send_somewhere_else ist etw. so was

{
    "path1" :
    {
       "path2" :
       [
            {
                 "key0" : "0",
                 "key1" : "true"
            },
            {
                 "key2" : "2.2",
                 "key3" : "3.3"
            }
       ]
    }
}

Ist sowieso da, um sie als Werte zu speichern, wie:"key1" : true oder"key2" : 2.2?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage