Сериализация и десериализация JSON с бустом

Я новичок в c++, Какой самый простой способ сериализации и десериализации данных типа std::Map с помощью boost, Я нашел несколько примеров с использованием PropertyTree но они неясны для меня.

58

Решение

Обратите внимание, что property_tree интерпретирует ключи как пути, например размещение пары «a.b» = «z» создаст {J «, {{b»: «z»}} JSON, а не {«a.b»: «z»}. В противном случае, используя property_tree тривиально. Вот маленький пример.

#include <sstream>
#include <map>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

using boost::property_tree::ptree;
using boost::property_tree::read_json;
using boost::property_tree::write_json;

void example() {
// Write json.
ptree pt;
pt.put ("foo", "bar");
std::ostringstream buf;
write_json (buf, pt, false);
std::string json = buf.str(); // {"foo":"bar"}

// Read json.
ptree pt2;
std::istringstream is (json);
read_json (is, pt2);
std::string foo = pt2.get<std::string> ("foo");
}

std::string map2json (const std::map<std::string, std::string>& map) {
ptree pt;
for (auto& entry: map)
pt.put (entry.first, entry.second);
std::ostringstream buf;
write_json (buf, pt, false);
return buf.str();
}
85

Другие решения

Других решений пока нет …