diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-02-16 12:06:12 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-02-16 12:06:12 (GMT) |
commit | 6926b730e79e1e7bbb5080c4182d8c2862b08fdc (patch) | |
tree | f8e2d31ab8772554e560bb7581fe583a2aea9d76 /src/uscxml/Message.cpp | |
parent | 1675d444d3e118742a97f5071d523dba0af22c83 (diff) | |
download | uscxml-6926b730e79e1e7bbb5080c4182d8c2862b08fdc.zip uscxml-6926b730e79e1e7bbb5080c4182d8c2862b08fdc.tar.gz uscxml-6926b730e79e1e7bbb5080c4182d8c2862b08fdc.tar.bz2 |
Started uscxml debugger
Diffstat (limited to 'src/uscxml/Message.cpp')
-rw-r--r-- | src/uscxml/Message.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/uscxml/Message.cpp b/src/uscxml/Message.cpp index b664fd1..bbd7f28 100644 --- a/src/uscxml/Message.cpp +++ b/src/uscxml/Message.cpp @@ -318,8 +318,7 @@ Data Data::fromXML(const std::string& xmlString) { Data Data::fromJSON(const std::string& jsonString) { Data data; - std::string trimmed = jsonString; - boost::trim(trimmed); + std::string trimmed = boost::trim_copy(jsonString); if (trimmed.length() == 0) return data; @@ -387,23 +386,29 @@ Data Data::fromJSON(const std::string& jsonString) { size_t currTok = 0; do { + // used for debugging // jsmntok_t t2 = t[currTok]; // std::string value = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start); switch (t[currTok].type) { case JSMN_STRING: dataStack.back()->type = Data::VERBATIM; - case JSMN_PRIMITIVE: - dataStack.back()->atom = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start); + case JSMN_PRIMITIVE: { + std::string value = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start); + if (dataStack.back()->type == Data::VERBATIM) { + boost::replace_all(value, "\\\"", "\""); + } + dataStack.back()->atom = value; dataStack.pop_back(); currTok++; break; + } case JSMN_OBJECT: case JSMN_ARRAY: tokenStack.push_back(t[currTok]); currTok++; break; } - + // used for debugging // t2 = t[currTok]; // value = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start); @@ -419,7 +424,8 @@ Data Data::fromJSON(const std::string& jsonString) { if (tokenStack.back().type == JSMN_OBJECT && (t[currTok].type == JSMN_PRIMITIVE || t[currTok].type == JSMN_STRING)) { // grab key and push new data - dataStack.push_back(&(dataStack.back()->compound[trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start)])); + std::string value = trimmed.substr(t[currTok].start, t[currTok].end - t[currTok].start); + dataStack.push_back(&(dataStack.back()->compound[value])); currTok++; } if (tokenStack.back().type == JSMN_ARRAY) { |