这是我的界面:
public interface RKIApi {
String BASE_URL = "https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/";
@Headers("Content-Type: application/json")
@GET("query?where=1%3D1&outFields=cases,deaths,cases_per_population,county,death_rate&returnGeometry=false&outSR=4326&f=json")
Call<List<County>> getCounties();
}
这是我希望将收到的数据转换到的县数据类:
public class County {
@SerializedName("county")
@Expose
private String county;
@SerializedName("cases")
@Expose
private int cases;
@SerializedName("deaths")
@Expose
private int deaths;
@SerializedName("cases_per_population")
@Expose
private float casesPerPopulation;
@SerializedName("death_rate")
@Expose
private float deathRate;
public County(String county, int cases, int deaths, float casesPerPopulation, float deathRate) {
this.county = county;
this.cases = cases;
this.deaths = deaths;
this.casesPerPopulation = casesPerPopulation;
this.deathRate = deathRate;
}
...Getters和setters...
Retrofit retrofit = new Retrofit.Builder().baseUrl(RKIApi.BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
RKIApi apiService = retrofit.create(RKIApi.class);
Call<List<County>> call = apiService.getCounties();
call.enqueue(new Callback<List<County>>() {
@Override
public void onResponse(@NonNull Call<List<County>> call,@NonNull Response<List<County>> response) {
... Do something ...
}
@Override
public void onFailure(@NonNull Call<List<County>> call,@NonNull Throwable t) {
System.out.println("========== ERROR ==========");
System.out.println(t.getMessage());
}
});
错误的问题和原因不是在一个设计糟糕的API中,就是在一个错误解释的API中。您的api没有发送对象列表。API很可能会生成如下所示的JSON:
{ ...content }
它不是对象列表而是单个对象。改装正在期待这样的事情:
[ { ....County } { ..County }? ]
因为您告诉要修改以返回LIST
的列表。
其中[
表示对象数组。因此,为了解决此问题,您有两个选择。或者更改api,使其返回的总是方括号,即使是空列表,如此[]
或此[{one object}]
为单个结果。
或者手动解析结果。请检查StackOverflow上的以下问题:
使用reverfit时手动解析响应的一部分
我正在尝试解析JSON代码,如下所示: 这是我的apiinterface.java 这是我得到的错误: 应为BEGIN_OBJECT,但在第1行第2列处为BEGIN_ARRAY
首先,我从服务器获得了这个Json对象,然后使用reverfit lib显示曲目名称是列表。但其返回此问题应为BEGIN_ARRAY,但在COLOMUNS 1处为BEGIN_OBJECTS。 我正在使用这些类: 并且此跟踪类:
有改装API 附注。很抱歉可能的语法错误。
拜托,我有麻烦了。我想获取web api()上的所有实体
我正在尝试使用改版在我的应用程序上实现用户注册,但是我一直得到这个错误不确定是什么错误,java.lang.IllegalStateException:应该是BEGIN_OBJECT,但应该是BEGIN_ARRAY 这是邮递员的回复 } 我有两个模型类User模型类 和我的register类 如果可能的话有人帮我实现Kotlin coroutines