Я кодирую JSON-оболочку для дерева свойств Boost.
В настоящее время основное внимание уделяется записи результирующего JSON в строку или файл.
Используя boost :: property_tree :: json_parser :: write_json (ss, * pt), результирующее дерево свойств записывается в виде строки.
Но этот метод не понимает, что такое истина, ложь, ноль или число.
Все преобразуется в строку.
Чтение документации Boost — это ограничение библиотеки.
Есть ли способ изменить это поведение?
Ссылка на сайт В этой ссылке есть решение проблемы.
Это связано с изменением форсированного кода, поэтому я попробовал другую альтернативу.
Мое решение включает в себя регулярные выражения:
std::string JSONObject::toString() const
{
boost::regex exp("\"(null|true|false|[0-9]+(\\.[0-9]+)?)\"");
std::stringstream ss;
boost::property_tree::json_parser::write_json(ss, *pt);
std::string rv = boost::regex_replace(ss.str(), exp, "$1");
return rv;
}
В основном я ищу ключевые слова: true, false, null и любой тип числа.
Спички заменяются одинаковыми без кавычек.
Других решений пока нет …