quarta-feira, 14 de outubro de 2015

ANDROID - JSON - ERROR - com.google.gson.JsonParseException: The JsonDeserializer

Ao fazer o parse de um JSON, estava ocorrendo o seguinte erro:

com.google.gson.JsonParseException: The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@3211ceb3 failed to deserialize json object "Ocorreu" given the type java.util.ArrayList<meupackage.MinhaClasse>
            at com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:64)
            at com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:92)
            at com.google.gson.JsonDeserializationVisitor.visitUsingCustomHandler(JsonDeserializationVisitor.java:80)
            at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:101)
            at com.google.gson.JsonDeserializationContextDefault.fromJsonPrimitive(JsonDeserializationContextDefault.java:85)
            at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:56)
            at com.google.gson.Gson.fromJson(Gson.java:551)
            at com.google.gson.Gson.fromJson(Gson.java:498)
            at com.google.gson.Gson.fromJson(Gson.java:467)
            at com.google.gson.Gson.fromJson(Gson.java:417)
            at meupackage.getJsonIndiceRotatividade(Helper.java:101)
            at meupackage.IndiceRotatividadeFragment.onTaskComplete(IndiceRotatividadeFragment.java:150)
            at meupackage.IndiceRotatividadeTask.onPostExecute(IndiceRotatividadeTask.java:86)
            at meupackage.IndiceRotatividadeTask.onPostExecute(IndiceRotatividadeTask.java:19)
            at android.os.AsyncTask.finish(AsyncTask.java:632)
            at android.os.AsyncTask.access$600(AsyncTask.java:177)
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5942)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)

O problema estava no objeto que estava sendo trafegado. Ele deve obrigatóriamente ser serializável. Nesse caso, basta implementar a interface Serializable no modelo (VO / TO).

Regards




Nenhum comentário: