mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Added escaped char replacement
This commit is contained in:
		| @@ -7,6 +7,53 @@ | ||||
|  | ||||
| using namespace ArduinoJson::Parser; | ||||
|  | ||||
| static char unescapeChar(char c) | ||||
| { | ||||
|     switch (c) | ||||
|     { | ||||
|     case 'b': return '\b'; | ||||
|     case 'f': return '\f'; | ||||
|     case 'n': return '\n'; | ||||
|     case 'r': return '\r'; | ||||
|     case 't': return '\t'; | ||||
|     default: return c; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void unescapeString(char* s) | ||||
| { | ||||
|     char* readPtr = s; | ||||
|     char* writePtr = s; | ||||
|  | ||||
|     while (true) | ||||
|     { | ||||
|         if (*readPtr == '\\') | ||||
|         { | ||||
|             readPtr++; | ||||
|             *writePtr = unescapeChar(*readPtr); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             *writePtr = *readPtr; | ||||
|         } | ||||
|  | ||||
|         if (*writePtr == 0) break; | ||||
|  | ||||
|         readPtr++; | ||||
|         writePtr++; | ||||
|     } | ||||
| } | ||||
|  | ||||
| char* JsonToken::getText() | ||||
| { | ||||
|     char* s = json + token->start; | ||||
|     json[token->end] = 0; | ||||
|  | ||||
|     unescapeString(s); | ||||
|  | ||||
|     return s; | ||||
| } | ||||
|  | ||||
| JsonToken JsonToken::nextSibling() const | ||||
| { | ||||
|     // start with current token | ||||
|   | ||||
| @@ -29,11 +29,7 @@ namespace ArduinoJson | ||||
|             } | ||||
|  | ||||
|             // Get content of the JSON token | ||||
|             char* getText() | ||||
|             { | ||||
|                 json[token->end] = 0; | ||||
|                 return json + token->start; | ||||
|             } | ||||
|             char* getText(); | ||||
|  | ||||
|             // Get the number of children tokens | ||||
|             int childrenCount() | ||||
|   | ||||
| @@ -31,6 +31,12 @@ namespace ArduinoJsonParserTests | ||||
|             outputMustBe(0); | ||||
|         } | ||||
|  | ||||
|         TEST_METHOD(SimpleString) | ||||
|         { | ||||
|             whenInputIs("\"Hi!\""); | ||||
|             outputMustBe("Hi!"); | ||||
|         } | ||||
|  | ||||
|         TEST_METHOD(EscapedQuote) | ||||
|         { | ||||
|             whenInputIs("\"12\\\"34\"");  // ie 12\"34 | ||||
| @@ -81,7 +87,7 @@ namespace ArduinoJsonParserTests | ||||
|  | ||||
|         TEST_METHOD(AllEscapedCharsTogether) | ||||
|         { | ||||
|             whenInputIs("1\\\"2\\\\3\\/4\\b5\\f6\\n7\\r8\\t9\""); | ||||
|             whenInputIs("\"1\\\"2\\\\3\\/4\\b5\\f6\\n7\\r8\\t9\""); | ||||
|             outputMustBe("1\"2\\3/4\b5\f6\n7\r8\t9"); | ||||
|         } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user