I get java.lang.StackOverflowError when trying to serialize an Object that contains java.nio.file.Path
Even when I wrote:
public class PathConverter implements JsonDeserializer<Path>, JsonSerializer<Path> { @Override public Path deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { return Paths.get(jsonElement.getAsString()); } @Override public JsonElement serialize(Path path, Type type, JsonSerializationContext jsonSerializationContext) { return new JsonPrimitive(path.toString()); } }
and apply it:
String json = new GsonBuilder() .registerTypeAdapter(Path.class, new PathConverter()) .create() .toJson(constructorSetup, new TypeToken<ConstructorSetup>() {}.getType());
I still cannot serialize this class:
public class ConstructorSetup { private Path appIconMimmapDirPathOnPc; }
Stacktrace: (full on pastebin )
Exception in thread "main" java.lang.StackOverflowError at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380) ... at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:355) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:117) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) at com.google.gson.Gson.getAdapter(Gson.java:356) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:82) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) at com.google.gson.Gson.getAdapter(Gson.java:356) ... at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:82) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) at com.google.gson.Gson.getAdapter(Gson.java:356)
Any solution?
java gson nio
Alexandr
source share