J'ai cette HashMap Map,Map> pathData = new HashMap<>();
comme attribut d'un autre objet (Tour_Object) et j'essaie de le sérialiser/désérialiser en json en utilisant la bibliothèque GSON.
public static String setTourToJson(Tour_Object tourObject)
{
Gson gson = new Gson();
return gson.toJson(tourObject);
}
public static Tour_Object getTourFromJson(String JsonString)
{
Gson gson = new Gson();
return gson.fromJson(JsonString, new TypeToken() {
}.getType());
}
L'exception suivante est lancée lorsque je procède à la désérialisation:
04-19 11:18:49.449 29076-29076/abff.fxguide E/AndroidRuntime: FATAL EXCEPTION: main
Processus: abff.fxguide, PID: 29076
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 100 path $.pathData.
à com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
à com.google.gson.Gson.fromJson(Gson.java:879)
à com.google.gson.Gson.fromJson(Gson.java:844)
à com.google.gson.Gson.fromJson(Gson.java:793)
à com.google.gson.Gson.fromJson(Gson.java:765)
à abff.fxguide.Tour_Helper.getTourFromJson(Tour_Helper.java:311)
à abff.fxguide.Tour_All.showTourDetails(Tour_All.java:266)
à abff.fxguide.Tour_All$8.onClick(Tour_All.java:370)
à android.view.View.performClick(View.java:4856)
à android.view.View$PerformClick.run(View.java:19956)
à android.os.Handler.handleCallback(Handler.java:739)
à android.os.Handler.dispatchMessage(Handler.java:95)
à android.os.Looper.loop(Looper.java:211)
à android.app.ActivityThread.main(ActivityThread.java:5389)
à java.lang.reflect.Method.invoke(Méthode native)
à java.lang.reflect.Method.invoke(Method.java:372)
à com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
à com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 100 path $.pathData.
à com.google.gson.stream.JsonReader.beginObject(JsonReader.java:388)
à com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:183)
à com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
à com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
à com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:186)
à com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
à com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:116)
à com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:216)
à com.google.gson.Gson.fromJson(Gson.java:879)
à com.google.gson.Gson.fromJson(Gson.java:844)
à com.google.gson.Gson.fromJson(Gson.java:793)
à com.google.gson.Gson.fromJson(Gson.java:765)
à abff.fxguide.Tour_Helper.getTourFromJson(Tour_Helper.java:311)
à abff.fxguide.Tour_All.showTourDetails(Tour_All.java:266)
à abff.fxguide.Tour_All$8.onClick(Tour_All.java:370)
à android.view.View.performClick(View.java:4856)
à android.view.View$PerformClick.run(View.java:19956)
à android.os.Handler.handleCallback(Handler.java:739)
à android.os.Handler.dispatchMessage(Handler.java:95)
à android.os.Looper.loop(Looper.java:211)
à android.app.ActivityThread.main(ActivityThread.java:5389)
à java.lang.reflect.Method.invoke(Méthode native)
à java.lang.reflect.Method.invoke(Method.java:372)
à com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
à com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
J'aimerais savoir si l'objet principal (Tour_Object) est désérialisable comme indiqué dans getTourFromJson(String JsonString)
lors de l'utilisation d'attributs tels que pathData?