Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 杰克逊&x2B;Gson&x2B;改造应为BEGIN\u对象,但为BEGIN\u数组_Android_Json_Jackson_Gson_Retrofit2 - Fatal编程技术网

Android 杰克逊&x2B;Gson&x2B;改造应为BEGIN\u对象,但为BEGIN\u数组

Android 杰克逊&x2B;Gson&x2B;改造应为BEGIN\u对象,但为BEGIN\u数组,android,json,jackson,gson,retrofit2,Android,Json,Jackson,Gson,Retrofit2,我知道有人问了很多问题,但我发现没有一个问题能解决我的特殊问题 这是我的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 S

我知道有人问了很多问题,但我发现没有一个问题能解决我的特殊问题

这是我的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);
  }
}
public interface Api {
  @GET("/data/heatmap_stations.json")
  Call<Zona> getZona();
}
Public class Zonas extends ArrayList<Zona> {}
这是我的界面

Api.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);
  }
}
public interface Api {
  @GET("/data/heatmap_stations.json")
  Call<Zona> getZona();
}
Public class Zonas extends ArrayList<Zona> {}
公共接口Api{
@获取(“/data/heatmap\u stations.json”)
调用getZona();
}
我有点理解它发生的原因,因为响应是一个JSON数组,但是Jackson+Gson需要一个JSON对象

我尝试创建如下POJO:

Zonas.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);
  }
}
public interface Api {
  @GET("/data/heatmap_stations.json")
  Call<Zona> getZona();
}
Public class Zonas extends ArrayList<Zona> {}
公共类Zonas扩展了ArrayList{}
更改接口中的调用签名和改装调用,将单个DTO替换为复数(从调用到调用,将单个类替换为继承ArrayList的类),但它什么也不做,我的意思是,它没有引发异常,但也没有引发响应。

Change

public interface Api {
  @GET("/data/heatmap_stations.json")
  Call<Zona> getZona();
}
公共接口Api{
@获取(“/data/heatmap\u stations.json”)
调用getZona();
}

公共接口Api{
@获取(“/data/heatmap\u stations.json”)
调用getZona();
}

您告诉它期望一个
Zona
对象,但它返回一个
Zona
对象数组

关于这个确切的错误有很多重复项。提示:您返回的是一个JSONArray,而不是JSONObject,因此您可能希望在调用中使用
List
。此外,Jackson和Gson执行相同的操作,因此我不确定您为什么同时使用这两个对象