diff --git a/gson/src/main/java/com/google/gson/Gson.java b/gson/src/main/java/com/google/gson/Gson.java index 28ba4ae32f..8d53e00acf 100644 --- a/gson/src/main/java/com/google/gson/Gson.java +++ b/gson/src/main/java/com/google/gson/Gson.java @@ -588,7 +588,7 @@ public String toJson(Object src) { * @see #toJson(Object) */ public String toJson(Object src, Type typeOfSrc) { - StringBuilder writer = new StringBuilder(); + StringBuilder writer = JsonElement.newJsonStringBuilder(); toJson(src, typeOfSrc, writer); return writer.toString(); } @@ -706,7 +706,7 @@ public void toJson(Object src, Type typeOfSrc, JsonWriter writer) throws JsonIOE * @since 1.4 */ public String toJson(JsonElement jsonElement) { - StringBuilder writer = new StringBuilder(); + StringBuilder writer = JsonElement.newJsonStringBuilder(); toJson(jsonElement, writer); return writer.toString(); } diff --git a/gson/src/main/java/com/google/gson/JsonElement.java b/gson/src/main/java/com/google/gson/JsonElement.java index 127b96078c..d35c321168 100644 --- a/gson/src/main/java/com/google/gson/JsonElement.java +++ b/gson/src/main/java/com/google/gson/JsonElement.java @@ -94,6 +94,9 @@ * @author Joel Leitch */ public abstract class JsonElement { + + private static final int DEFAULT_JSON_BUFFER_SIZE = 256; + /** * @deprecated Creating custom {@code JsonElement} subclasses is highly discouraged and can lead * to undefined behavior.
@@ -420,7 +423,7 @@ public short getAsShort() { @Override public String toString() { try { - StringBuilder stringBuilder = new StringBuilder(); + StringBuilder stringBuilder = newJsonStringBuilder(); JsonWriter jsonWriter = new JsonWriter(Streams.writerForAppendable(stringBuilder)); // Make writer lenient because toString() must not fail, even if for example JsonPrimitive // contains NaN @@ -431,4 +434,8 @@ public String toString() { throw new AssertionError(e); } } + + static StringBuilder newJsonStringBuilder() { + return new StringBuilder(DEFAULT_JSON_BUFFER_SIZE); + } } diff --git a/gson/src/main/java/com/google/gson/TypeAdapter.java b/gson/src/main/java/com/google/gson/TypeAdapter.java index 0c21c78e3b..1ab7c05c9d 100644 --- a/gson/src/main/java/com/google/gson/TypeAdapter.java +++ b/gson/src/main/java/com/google/gson/TypeAdapter.java @@ -158,7 +158,7 @@ public final void toJson(Writer out, T value) throws IOException { * @since 2.2 */ public final String toJson(T value) { - StringBuilder stringBuilder = new StringBuilder(); + StringBuilder stringBuilder = JsonElement.newJsonStringBuilder(); try { toJson(Streams.writerForAppendable(stringBuilder), value); } catch (IOException e) { diff --git a/gson/src/test/java/com/google/gson/GsonTest.java b/gson/src/test/java/com/google/gson/GsonTest.java index 2d00dd4d35..a298a4a40d 100644 --- a/gson/src/test/java/com/google/gson/GsonTest.java +++ b/gson/src/test/java/com/google/gson/GsonTest.java @@ -60,6 +60,11 @@ private static Gson createGson() { return gsonBuilder.create(); } + @Test + public void testDefaultJsonStringBuilderCapacity() { + assertThat(JsonElement.newJsonStringBuilder().capacity()).isEqualTo(256); + } + @Test public void testStrictnessDefault() { assertThat(new Gson().strictness).isNull();