Support control characters in JSON output

This commit is contained in:
Eelco Dolstra 2014-09-30 00:41:18 +02:00
parent f77be20c16
commit d61853430a
2 changed files with 8 additions and 0 deletions

View file

@ -3,6 +3,7 @@
#include "util.hh"
#include <cstdlib>
#include <iomanip>
namespace nix {
@ -16,6 +17,8 @@ void escapeJSON(std::ostream & str, const string & s)
else if (*i == '\n') str << "\\n";
else if (*i == '\r') str << "\\r";
else if (*i == '\t') str << "\\t";
else if (*i >= 0 && *i < 32)
str << "\\u" << std::setfill('0') << std::setw(4) << std::hex << (uint16_t) *i << std::dec;
else str << *i;
str << "\"";
}

View file

@ -36,6 +36,11 @@ struct JSONObject
attr(s);
escapeJSON(str, t);
}
void attr(const string & s, int n)
{
attr(s);
str << n;
}
};
struct JSONList