Ich weiß, dass dies viel gefragt wurde, aber keine der Fragen, die ich gefunden habe, lösen mein spezifisches Problem.Jackson + Gson + Retrofit Erwartete BEGIN_OBJECT aber war BEGIN_ARRAY
Hier ist meine JSON
[JSON URL] [1]
[
{
"unit":"IMECA",
"value":29,
},
{
"unit":"IMECA",
"value":43,
}
]
das ist mein DTO
Zona.java
public class Zona {
private String unit;
private int value;
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
@Override
public String toString() {
return String.valueOf(unit) + ": " + String.valueOf(value);
}
}
und diese ist meine Schnittstelle
Api.java
public interface Api {
@GET("/data/heatmap_stations.json")
Call<Zona> getZona();
}
ich irgendwie verstehen von warum es geschieht, weil ein JSON-Array ist die Antwort aber Jackson + Gson sind ein einziges JSON-Objekt erwartet.
ich versuchte, eine POJO wie diese zu schaffen:
Zonas.java
Public class Zonas extends ArrayList<Zona> {}
und Ändern der Anruf Signatur in der Schnittstelle und dem Retrofit Anrufs, die einzelnen DTO auf die Mehrzahl Ersetzen (von Call < Zona> Call < Zonas>, Ersetzen der einzelnen Klasse, die ArrayList < erbt>), aber es tut einfach nichts, ich meine, es hat keine Ausnahme ausgelöst, aber es hat keine Antwort geworfen entweder.
Es gibt eine Menge von Duplikaten darüber Rückkehr genaue Error. Hinweis: Sie geben ein JSONArray zurück, kein JSONObject, also wollen Sie wahrscheinlich "List" im Call –
Auch Jackson und Gson führen den gleichen Vorgang aus, also bin ich mir nicht sicher, warum Sie beide haben –