2016-12-05 8 views
0

ich eine Antwort von Retrofit 2 wie immer:Erwartete BEGIN_OBJECT aber war STRING mit Gson

{"error":"0","posts":[{"account_id":61,"industry_id":1,"company_id":1,"profession_id":1,"description":"Demo Post 13","tags":"Cinema","created_at":"2016-12-05 10:47:41","totalFlags":0,"totalComments":0},{"account_id":65,"industry_id":2,"company_id":13,"profession_id":11,"description":"Demo Post 12","tags":"Cinema","created_at":"2016-12-05 10:47:33","totalFlags":0,"totalComments":0},{"account_id":65,"industry_id":2,"company_id":13,"profession_id":11,"description":"Demo Post 11","tags":"Culture","created_at":"2016-12-05 10:47:17","totalFlags":0,"totalComments":0}]}

und ich habe zwei Artikel erklärt:

public class FeedServiceResponse implements Serializable { 

    private String error; 
    private FeedServiceResponseItem[] posts; 

    // getters/setters omitted 
} 

und

public class FeedServiceResponseItem implements Serializable { 

    private int account_id; 
    private int industry_id; 
    private int company_id; 
    private int profession_id; 
    private String description; 
    private String tags; 
    private String created_at; 
    private String totalFlags; 
    private int totalComments; 

// again getters/setters omitted 

} 

aber innerhalb onResponse() von Retrofit wenn ich versuche, solche Daten zu deserialisieren:

FeedServiceResponse feedServiceResponse = gson.fromJson(response.body().toString(), FeedServiceResponse.class); 

bekomme ich folgende Fehlermeldung:

12-05 17:15:17.318 16724-16724/MY_PACKAGE.mock E/AndroidRuntime: FATAL EXCEPTION: main 
Process: MY_PACKAGE.mock, PID: 16724 
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ 
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224) 
    at com.google.gson.Gson.fromJson(Gson.java:887) 
    at com.google.gson.Gson.fromJson(Gson.java:852) 
    at com.google.gson.Gson.fromJson(Gson.java:801) 
    at com.google.gson.Gson.fromJson(Gson.java:773) 
    at MY_PACKAGE.main.fragments.feed.FeedRepository$1.onResponse(FeedRepository.java:50) 
    at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 
    at android.os.Handler.handleCallback(Handler.java:733) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5086) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ 
    at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385) 
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213) 
    at com.google.gson.Gson.fromJson(Gson.java:887)  
    at com.google.gson.Gson.fromJson(Gson.java:852)  
    at com.google.gson.Gson.fromJson(Gson.java:801)  
    at com.google.gson.Gson.fromJson(Gson.java:773)  
    at MY_PACKAGE.main.fragments.feed.FeedRepository$1.onResponse(FeedRepository.java:50)  
    at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)  
    at android.os.Handler.handleCallback(Handler.java:733)  
    at android.os.Handler.dispatchMessage(Handler.java:95)  
    at android.os.Looper.loop(Looper.java:136)  
    at android.app.ActivityThread.main(ActivityThread.java:5086)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)  
    at dalvik.system.NativeStart.main(Native Method)  

Ich habe andere Fragen/Antworten auf StackOverflow aber kann nicht scheinen zu finden, was ich falsch mache.

+0

Bitte erklären Sie, warum der Downvote - Ich habe ähnliche Beiträge gelesen und ich habe versucht, eine gut erklärte Frage zu erstellen. Wenn ich mich bei meinen Annahmen geirrt habe, würde ich gerne wissen warum und die Frage entfernen. – Mes

+0

Ihre Annahme, dass Sie json bekommen, ist falsch ... Was macht * Ich habe andere Fragen gelesen * zweifelhaft – Selvin

+0

Hmmm ok, das; s ein interessanter Gedanke - ich muss darüber nachdenken – Mes

Antwort

0

Es scheint, dass Ihr Server nicht mit JSON-Daten antwortet. Sie sollten es mit einem Inspektionswerkzeug überprüfen oder indem Sie die Protokollierung aktivieren.

Verwandte Themen