Browse Source

Merge branch '2.7.x'

pull/31887/head
Phillip Webb 4 years ago
parent
commit
e08aa84892
  1. 8
      spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/BasicJsonParser.java

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

@ -42,7 +42,7 @@ public class BasicJsonParser extends AbstractJsonParser {
@Override @Override
public Map<String, Object> parseMap(String json) { public Map<String, Object> parseMap(String json) {
return tryParse(() -> parseMap(json, this::parseMapInternal), Exception.class); return tryParse(() -> parseMap(json, (jsonToParse) -> parseMapInternal(0, jsonToParse)), Exception.class);
} }
@Override @Override
@ -67,7 +67,7 @@ public class BasicJsonParser extends AbstractJsonParser {
return parseListInternal(nesting + 1, json); return parseListInternal(nesting + 1, json);
} }
if (json.startsWith("{")) { if (json.startsWith("{")) {
return parseMapInternal(json); return parseMapInternal(nesting, json);
} }
if (json.startsWith("\"")) { if (json.startsWith("\"")) {
return trimTrailingCharacter(trimLeadingCharacter(json, '"'), '"'); return trimTrailingCharacter(trimLeadingCharacter(json, '"'), '"');
@ -87,7 +87,7 @@ public class BasicJsonParser extends AbstractJsonParser {
return json; return json;
} }
private Map<String, Object> parseMapInternal(String json) { private Map<String, Object> parseMapInternal(int nesting, String json) {
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
json = trimLeadingCharacter(trimTrailingCharacter(json, '}'), '{').trim(); json = trimLeadingCharacter(trimTrailingCharacter(json, '}'), '{').trim();
for (String pair : tokenize(json)) { for (String pair : tokenize(json)) {
@ -95,7 +95,7 @@ public class BasicJsonParser extends AbstractJsonParser {
Assert.state(values[0].startsWith("\"") && values[0].endsWith("\""), Assert.state(values[0].startsWith("\"") && values[0].endsWith("\""),
"Expecting double-quotes around field names"); "Expecting double-quotes around field names");
String key = trimLeadingCharacter(trimTrailingCharacter(values[0], '"'), '"'); String key = trimLeadingCharacter(trimTrailingCharacter(values[0], '"'), '"');
Object value = parseInternal(0, values[1]); Object value = parseInternal(nesting, values[1]);
map.put(key, value); map.put(key, value);
} }
return map; return map;

Loading…
Cancel
Save