Jackson + Gson + Retrofit 预计 BEGIN_OBJECT 但 BEGIN_ARRAY
Jackson + Gson + Retrofit Expected BEGIN_OBJECT but was BEGIN_ARRAY
我知道这个问题被问了很多,但是 none 我发现的问题解决了我的特定问题。
这是我的 JSON
[JSON URL][1]
[
{
"unit":"IMECA",
"value":29,
},
{
"unit":"IMECA",
"value":43,
}
]
这是我的 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);
}
}
这是我的界面
Api.java
public interface Api {
@GET("/data/heatmap_stations.json")
Call<Zona> getZona();
}
我有点理解为什么会发生,因为响应是JSON数组,但Jackson + Gson正在期待单个 JSON 对象。
我试过像这样创建一个 POJO:
Zonas.java
Public class Zonas extends ArrayList<Zona> {}
并更改Interface和Retrofit调用中的Call签名,将单个DTO替换为复数,(从Call到Call,将单个class替换为who继承了 ArrayList<>),但它什么都不做,我的意思是,它没有抛出异常,但也没有抛出响应。
改变
public interface Api {
@GET("/data/heatmap_stations.json")
Call<Zona> getZona();
}
到
public interface Api {
@GET("/data/heatmap_stations.json")
Call<List<Zona>> getZona();
}
你告诉它期待一个 Zona
对象,但它返回一个 Zona
对象数组
我知道这个问题被问了很多,但是 none 我发现的问题解决了我的特定问题。
这是我的 JSON
[JSON URL][1]
[
{
"unit":"IMECA",
"value":29,
},
{
"unit":"IMECA",
"value":43,
}
]
这是我的 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);
}
}
这是我的界面
Api.java
public interface Api {
@GET("/data/heatmap_stations.json")
Call<Zona> getZona();
}
我有点理解为什么会发生,因为响应是JSON数组,但Jackson + Gson正在期待单个 JSON 对象。
我试过像这样创建一个 POJO:
Zonas.java
Public class Zonas extends ArrayList<Zona> {}
并更改Interface和Retrofit调用中的Call签名,将单个DTO替换为复数,(从Call
改变
public interface Api {
@GET("/data/heatmap_stations.json")
Call<Zona> getZona();
}
到
public interface Api {
@GET("/data/heatmap_stations.json")
Call<List<Zona>> getZona();
}
你告诉它期待一个 Zona
对象,但它返回一个 Zona
对象数组