Commit 7daade21 authored by DevOrc's avatar DevOrc Committed by Stephane Nicoll

Support escaped characters in BasicJsonParser

This commit adds the ability to have escaped characters, like the quote,
when using the BasicJsonParser. It also adds a short test for escaped
quotes.

Closes gh-14521
parent a91f9b6f
......@@ -125,9 +125,16 @@ public class BasicJsonParser implements JsonParser {
int inObject = 0;
int inList = 0;
boolean inValue = false;
boolean inEscape = false;
StringBuilder build = new StringBuilder();
while (index < json.length()) {
char current = json.charAt(index);
if (inEscape) {
build.append(current);
index++;
inEscape = false;
continue;
}
if (current == '{') {
inObject++;
}
......@@ -147,6 +154,9 @@ public class BasicJsonParser implements JsonParser {
list.add(build.toString());
build.setLength(0);
}
else if (current == '\\') {
inEscape = true;
}
else {
build.append(current);
}
......
......@@ -170,4 +170,11 @@ public abstract class AbstractJsonParserTests {
this.parser.parseList("\n\t{}");
}
@Test
public void escapeQuote() {
String input = "{\"foo\": \"\\\"bar\\\"\"}";
Map<String, Object> map = this.parser.parseMap(input);
assertThat(map.get("foo")).isEqualTo("\"bar\"");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment