Browse Source

Merge branch '2.0.x'

pull/14515/merge
Stephane Nicoll 7 years ago
parent
commit
ac2fefb6c3
  1. 10
      spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/BasicJsonParser.java
  2. 7
      spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/AbstractJsonParserTests.java

10
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/BasicJsonParser.java

@ -113,9 +113,16 @@ public class BasicJsonParser extends AbstractJsonParser { @@ -113,9 +113,16 @@ public class BasicJsonParser extends AbstractJsonParser {
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++;
}
@ -135,6 +142,9 @@ public class BasicJsonParser extends AbstractJsonParser { @@ -135,6 +142,9 @@ public class BasicJsonParser extends AbstractJsonParser {
list.add(build.toString());
build.setLength(0);
}
else if (current == '\\') {
inEscape = true;
}
else {
build.append(current);
}

7
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/AbstractJsonParserTests.java

@ -170,4 +170,11 @@ public abstract class AbstractJsonParserTests { @@ -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\"");
}
}

Loading…
Cancel
Save