ppc-lang/src/utils/json.cc

49 lines
1.2 KiB
C++

#include "utils/json.hh"
#include <sstream>
namespace ppc::data::json {
std::string stringify(const data::value_t &val) {
std::stringstream out;
bool first = true;
if (val.is_array()) {
out << '[';
for (const auto &el : val.array()) {
if (el.is_null()) continue;
if (!first) out << ',';
first = false;
out << stringify(el);
}
out << ']';
}
else if (val.is_map()) {
out << '{';
for (const auto &el : val.map()) {
if (el.second.is_null()) continue;
if (!first) out << ',';
first = false;
out << '"' << el.first << '"' << ':' << stringify(el.second);
}
out << '}';
}
else if (val.is_bool()) {
if (val.boolean()) out << "true";
else out << "false";
}
else if (val.is_null()) {
out << "null";
}
else if (val.is_number()) {
out << val.number();
}
else if (val.is_string()) {
out << '"' << val.string() << '"';
}
return out.str();
}
}