Escape characters in JSON instead of HTML-entetizing, implements #895
This commit is contained in:
parent
c50b69c654
commit
0946fac11f
@ -160,6 +160,47 @@ inline void stringSplit(
|
|||||||
boost::split(result, s, boost::is_any_of(std::string(&delim)));
|
boost::split(result, s, boost::is_any_of(std::string(&delim)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline std::string EscapeJSONString(const std::string& input) {
|
||||||
|
std::string output;
|
||||||
|
output.reserve(input.size());
|
||||||
|
for(
|
||||||
|
std::string::const_iterator iter = input.begin();
|
||||||
|
iter != input.end();
|
||||||
|
++iter
|
||||||
|
) {
|
||||||
|
switch (iter[0]) {
|
||||||
|
case '\\':
|
||||||
|
output += "\\\\";
|
||||||
|
break;
|
||||||
|
case '"':
|
||||||
|
output += "\\\"";
|
||||||
|
break;
|
||||||
|
case '/':
|
||||||
|
output += "\\/";
|
||||||
|
break;
|
||||||
|
case '\b':
|
||||||
|
output += "\\b";
|
||||||
|
break;
|
||||||
|
case '\f':
|
||||||
|
output += "\\f";
|
||||||
|
break;
|
||||||
|
case '\n':
|
||||||
|
output += "\\n";
|
||||||
|
break;
|
||||||
|
case '\r':
|
||||||
|
output += "\\r";
|
||||||
|
break;
|
||||||
|
case '\t':
|
||||||
|
output += "\\t";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
output += *iter;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
static std::string originals[] = {"&", "\"", "<", ">", "'", "[", "]", "\\"};
|
static std::string originals[] = {"&", "\"", "<", ">", "'", "[", "]", "\\"};
|
||||||
static std::string entities[] = {"&", """, "<", ">", "'", "&91;", "&93;", " \" };
|
static std::string entities[] = {"&", """, "<", ">", "'", "&91;", "&93;", " \" };
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user