इस Serializing का कारण बनता है, एक StackOverFlowError कारण बनता है:Gson: एक java.nio.Path serializing एक StackOverflowError
import java.nio.file.Path;
import java.nio.file.Paths;
public class Tmp{
private Path path=null;
public Tmp() {
path=Paths.get("c:\\temp\\");
}
}
यह मेरे लिए एक बग की तरह लग रहा है! या मैं कुछ गलत कर रहा हूँ? वहाँ वैकल्पिक हल है (कि स्ट्रिंग के लिए पथ धर्मान्तरित कुछ कस्टम serializer लिख उम्मीद)
java.lang.StackOverflowError
at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:372)
at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
...
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:128)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:75)
at com.google.gson.Gson.getAdapter(Gson.java:358)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getFieldAdapter(ReflectiveTypeAdapterFactory.java:109)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.access$100(ReflectiveTypeAdapterFactory.java:46)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:84)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:83)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:129)
...
Serializing विधि है:
public static void saveTo(BatchLogging logging, Path path) throws IOException {
Gson gson=new GsonBuilder().setPrettyPrinting().create();
// String json = gson.toJson(logging);
String json = gson.toJson(new Tmp());
List<String> lines = Arrays.asList(json.split(System.lineSeparator()));
Files.write(path, lines, StandardCharsets.UTF_8);
}
http://stackoverflow.com/q/36964995/1032167 अधिक जानकारी। कस्टम 'क्लास पाथकॉन्टरर लागू करें जेसनडेसरियललाइज़र, जेसनसेरियलज़र ' और इसे '.registerTypeHierarchyAdapter (Path.class, new MyPathConverter())' –
varren