diff --git a/spring-boot/src/main/java/org/springframework/boot/json/GsonJsonParser.java b/spring-boot/src/main/java/org/springframework/boot/json/GsonJsonParser.java index 148fd146dcd..3fd6ab396b6 100644 --- a/spring-boot/src/main/java/org/springframework/boot/json/GsonJsonParser.java +++ b/spring-boot/src/main/java/org/springframework/boot/json/GsonJsonParser.java @@ -33,6 +33,11 @@ import com.google.gson.reflect.TypeToken; */ public class GsonJsonParser implements JsonParser { + private static final TypeToken> LIST_TYPE = new TypeToken>() { + }; + private static final TypeToken> MAP_TYPE = new TypeToken>() { + }; + private Gson gson = new GsonBuilder().create(); @Override @@ -40,7 +45,7 @@ public class GsonJsonParser implements JsonParser { if (json != null) { json = json.trim(); if (json.startsWith("{")) { - return this.gson.fromJson(json, new MapTypeToken().getType()); + return this.gson.fromJson(json, MAP_TYPE.getType()); } } throw new IllegalArgumentException("Cannot parse JSON"); @@ -51,16 +56,10 @@ public class GsonJsonParser implements JsonParser { if (json != null) { json = json.trim(); if (json.startsWith("[")) { - TypeToken> type = new TypeToken>() { - }; - return this.gson.fromJson(json, type.getType()); + return this.gson.fromJson(json, LIST_TYPE.getType()); } } throw new IllegalArgumentException("Cannot parse JSON"); } - private static final class MapTypeToken extends TypeToken> { - - } - } diff --git a/spring-boot/src/main/java/org/springframework/boot/json/JacksonJsonParser.java b/spring-boot/src/main/java/org/springframework/boot/json/JacksonJsonParser.java index 97d5e4ed972..298d5d73dbf 100644 --- a/spring-boot/src/main/java/org/springframework/boot/json/JacksonJsonParser.java +++ b/spring-boot/src/main/java/org/springframework/boot/json/JacksonJsonParser.java @@ -30,10 +30,17 @@ import com.fasterxml.jackson.databind.ObjectMapper; */ public class JacksonJsonParser implements JsonParser { + private static final TypeReference> LIST_TYPE = new TypeReference>() { + }; + private static final TypeReference> MAP_TYPE = new TypeReference>() { + }; + + private final ObjectMapper objectMapper = new ObjectMapper(); + @Override public Map parseMap(String json) { try { - return new ObjectMapper().readValue(json, new MapTypeReference()); + return this.objectMapper.readValue(json, MAP_TYPE); } catch (Exception ex) { throw new IllegalArgumentException("Cannot parse JSON", ex); @@ -43,17 +50,11 @@ public class JacksonJsonParser implements JsonParser { @Override public List parseList(String json) { try { - TypeReference> type = new TypeReference>() { - }; - return new ObjectMapper().readValue(json, type); + return this.objectMapper.readValue(json, LIST_TYPE); } catch (Exception ex) { throw new IllegalArgumentException("Cannot parse JSON", ex); } } - private static class MapTypeReference extends TypeReference> { - - }; - }