Fixed issue 175 by adding default type adapters for StringBuilder and StringBuffer.
This commit is contained in:
parent
50a1191f90
commit
ea48a1debf
|
@ -87,6 +87,10 @@ final class DefaultTypeAdapters {
|
|||
private static final NumberTypeAdapter NUMBER_TYPE_ADAPTER = new NumberTypeAdapter();
|
||||
private static final ShortTypeAdapter SHORT_TYPE_ADAPTER = new ShortTypeAdapter();
|
||||
private static final StringTypeAdapter STRING_TYPE_ADAPTER = new StringTypeAdapter();
|
||||
private static final StringBuilderTypeAdapter STRING_BUILDER_TYPE_ADAPTER =
|
||||
new StringBuilderTypeAdapter();
|
||||
private static final StringBufferTypeAdapter STRING_BUFFER_TYPE_ADAPTER =
|
||||
new StringBufferTypeAdapter();
|
||||
|
||||
private static final PropertiesCreator PROPERTIES_CREATOR = new PropertiesCreator();
|
||||
private static final TreeSetCreator TREE_SET_CREATOR = new TreeSetCreator();
|
||||
|
@ -138,6 +142,8 @@ final class DefaultTypeAdapters {
|
|||
map.register(Short.class, SHORT_TYPE_ADAPTER);
|
||||
map.register(short.class, SHORT_TYPE_ADAPTER);
|
||||
map.register(String.class, STRING_TYPE_ADAPTER);
|
||||
map.register(StringBuilder.class, STRING_BUILDER_TYPE_ADAPTER);
|
||||
map.register(StringBuffer.class, STRING_BUFFER_TYPE_ADAPTER);
|
||||
|
||||
map.makeUnmodifiable();
|
||||
return map;
|
||||
|
@ -189,6 +195,8 @@ final class DefaultTypeAdapters {
|
|||
map.register(Short.class, wrapDeserializer(SHORT_TYPE_ADAPTER));
|
||||
map.register(short.class, wrapDeserializer(SHORT_TYPE_ADAPTER));
|
||||
map.register(String.class, wrapDeserializer(STRING_TYPE_ADAPTER));
|
||||
map.register(StringBuilder.class, wrapDeserializer(STRING_BUILDER_TYPE_ADAPTER));
|
||||
map.register(StringBuffer.class, wrapDeserializer(STRING_BUFFER_TYPE_ADAPTER));
|
||||
|
||||
map.makeUnmodifiable();
|
||||
return map;
|
||||
|
@ -912,6 +920,40 @@ final class DefaultTypeAdapters {
|
|||
}
|
||||
}
|
||||
|
||||
private static class StringBuilderTypeAdapter
|
||||
implements JsonSerializer<StringBuilder>, JsonDeserializer<StringBuilder> {
|
||||
public JsonElement serialize(StringBuilder src, Type typeOfSrc, JsonSerializationContext context) {
|
||||
return new JsonPrimitive(src.toString());
|
||||
}
|
||||
|
||||
public StringBuilder deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
|
||||
throws JsonParseException {
|
||||
return new StringBuilder(json.getAsString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return StringBuilderTypeAdapter.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class StringBufferTypeAdapter
|
||||
implements JsonSerializer<StringBuffer>, JsonDeserializer<StringBuffer> {
|
||||
public JsonElement serialize(StringBuffer src, Type typeOfSrc, JsonSerializationContext context) {
|
||||
return new JsonPrimitive(src.toString());
|
||||
}
|
||||
|
||||
public StringBuffer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
|
||||
throws JsonParseException {
|
||||
return new StringBuffer(json.getAsString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return StringBufferTypeAdapter.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class BooleanTypeAdapter
|
||||
implements JsonSerializer<Boolean>, JsonDeserializer<Boolean> {
|
||||
public JsonElement serialize(Boolean src, Type typeOfSrc, JsonSerializationContext context) {
|
||||
|
|
|
@ -429,4 +429,26 @@ public class DefaultTypeAdaptersTest extends TestCase {
|
|||
TreeSet<String> treeSet = gson.fromJson(json, type);
|
||||
assertTrue(treeSet.contains("Value1"));
|
||||
}
|
||||
|
||||
public void testStringBuilderSerialization() {
|
||||
StringBuilder sb = new StringBuilder("abc");
|
||||
String json = gson.toJson(sb);
|
||||
assertEquals("\"abc\"", json);
|
||||
}
|
||||
|
||||
public void testStringBuilderDeserialization() {
|
||||
StringBuilder sb = gson.fromJson("'abc'", StringBuilder.class);
|
||||
assertEquals("abc", sb.toString());
|
||||
}
|
||||
|
||||
public void testStringBufferSerialization() {
|
||||
StringBuffer sb = new StringBuffer("abc");
|
||||
String json = gson.toJson(sb);
|
||||
assertEquals("\"abc\"", json);
|
||||
}
|
||||
|
||||
public void testStringBufferDeserialization() {
|
||||
StringBuffer sb = gson.fromJson("'abc'", StringBuffer.class);
|
||||
assertEquals("abc", sb.toString());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user