samedi 9 mai 2015

Deserializing objects with gson, Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2

i'm working on deserialization of feed coming from server. I have encountered a weird issue with Gson library. I'm using code i've found here on stack on similar issue thread, but it doesn't work.

Unfortunately i don't know where the problem is... Can someone point me in the right direction?

public static ArrayList<FeedItem> parseFeed(String toParse){
        Type collectionType = new TypeToken<Collection<FeedItem>>(){}.getType();
        ArrayList<FeedItem> outcome = new Gson().fromJson(toParse, collectionType);
        return outcome;
    }

Error

05-09 10:16:02.908    2385-2385/com.lanceit.haito.lanceit E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.lanceit.haito.lanceit, PID: 2385
    com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
            at com.google.gson.Gson.fromJson(Gson.java:815)
            at com.google.gson.Gson.fromJson(Gson.java:768)
            at com.google.gson.Gson.fromJson(Gson.java:717)
            at com.lanceit.haito.lanceit.utils.SerializationHelper.parseFeed(SerializationHelper.java:25)
            at com.lanceit.haito.lanceit.network.lanceHandler.ListAllLances$1.onResponse(ListAllLances.java:30)
            at com.lanceit.haito.lanceit.network.lanceHandler.ListAllLances$1.onResponse(ListAllLances.java:27)
            at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)
            at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            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:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
            at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:338)
            at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:79)
            at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
            at com.google.gson.Gson.fromJson(Gson.java:803)
            at com.google.gson.Gson.fromJson(Gson.java:768)
            at com.google.gson.Gson.fromJson(Gson.java:717)
            at com.lanceit.haito.lanceit.utils.SerializationHelper.parseFeed(SerializationHelper.java:25)
            at com.lanceit.haito.lanceit.network.lanceHandler.ListAllLances$1.onResponse(ListAllLances.java:30)
            at com.lanceit.haito.lanceit.network.lanceHandler.ListAllLances$1.onResponse(ListAllLances.java:27)
            at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)
            at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)

Aucun commentaire:

Enregistrer un commentaire