diff --git a/spring-boot/src/main/java/org/springframework/boot/config/SimpleJsonParser.java b/spring-boot/src/main/java/org/springframework/boot/config/SimpleJsonParser.java index 1eb382d537e..d4b64b3ddc2 100644 --- a/spring-boot/src/main/java/org/springframework/boot/config/SimpleJsonParser.java +++ b/spring-boot/src/main/java/org/springframework/boot/config/SimpleJsonParser.java @@ -66,7 +66,6 @@ public class SimpleJsonParser implements JsonParser { private List parseListInternal(String json) { List list = new ArrayList(); json = trimLeadingCharacter(trimTrailingCharacter(json, ']'), '['); - ; for (String value : tokenize(json)) { list.add(parseInternal(value)); } @@ -83,6 +82,18 @@ public class SimpleJsonParser implements JsonParser { if (json.startsWith("\"")) { return trimTrailingCharacter(trimLeadingCharacter(json, '"'), '"'); } + try { + return Long.valueOf(json); + } + catch (NumberFormatException e) { + // ignore + } + try { + return Double.valueOf(json); + } + catch (NumberFormatException e) { + // ignore + } return json; } diff --git a/spring-boot/src/test/java/org/springframework/boot/config/SimpleJsonParserTests.java b/spring-boot/src/test/java/org/springframework/boot/config/SimpleJsonParserTests.java index 132578f68c7..6190e6099c2 100644 --- a/spring-boot/src/test/java/org/springframework/boot/config/SimpleJsonParserTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/config/SimpleJsonParserTests.java @@ -41,7 +41,15 @@ public class SimpleJsonParserTests { Map map = this.parser.parseMap("{\"foo\":\"bar\",\"spam\":1}"); assertEquals(2, map.size()); assertEquals("bar", map.get("foo")); - assertEquals("1", map.get("spam").toString()); + assertEquals(1L, ((Number) map.get("spam")).longValue()); + } + + @Test + public void testDoubleValie() { + Map map = this.parser.parseMap("{\"foo\":\"bar\",\"spam\":1.23}"); + assertEquals(2, map.size()); + assertEquals("bar", map.get("foo")); + assertEquals(1.23d, map.get("spam")); } @Test