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.
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
Ihre Annahme, dass Sie json bekommen, ist falsch ... Was macht * Ich habe andere Fragen gelesen * zweifelhaft – Selvin
Hmmm ok, das; s ein interessanter Gedanke - ich muss darüber nachdenken – Mes