|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#include <boost/json.hpp> boost::json::error_code ec; const boost::json::value some_value = boost::json::parse(json_response->c_str(), ec); ... std::string escape_json_entire_text(std::string_view input_text) { std::string result; result.reserve(input_text.length() * 2); /* Heuristic for potential growth */ for (char c : input_text) { switch (c) { case '"' : result += "\\\""; break; /* JSON string delimiters must be escaped */ case '\\': result += "\\\\"; break; /* Backslash itself must be escaped */ case '\b': result += "\\b"; break; /* Backspace */ case '\f': result += "\\f"; break; /* Form feed */ case '\n': result += "\\n"; break; /* Newline */ case '\r': result += "\\r"; break; /* Carriage return */ case '\t': result += "\\t"; break; /* Tab */ default: if (std::iscntrl(static_cast<unsigned char>(c))) { // For other control characters (0x00-0x1F), use \u00XX std::stringstream ss; ss << "\\u" << std::hex << std::setw(4) << std::setfill('0') << static_cast<int>(static_cast<unsigned char>(c)); result += ss.str(); } else { result += c; } break; } } return result; } void escape_all (user_dispatcher& UD) { /* доп.экран. символа ' для pgsql */ boost::replace_all(some_text, "'", "''"); /* Внутри jira-labels запрещены пробелы */ boost::replace_all(UD.jira_task.section, " ", ""); some_text = escape_json_entire_text(some_text); } |
BrightQnA.com
