【发布时间】:2017-02-14 06:24:54
【问题描述】:
学习如何在我的 Android 应用中使用 Retrofit,出现以下错误: 如果可以的话请帮忙。谢谢,
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
这是我的代码:如果您也可以,请提供帮助:
public void clickButton(View view){
button = (Button) findViewById(R.id.button);
drawDate = (TextView)findViewById(R.id.drawDate);
LotteryAPI.Factory.getIstance().getLottery().enqueue(new Callback<Lottery>() {
@Override
public void onResponse(Call<Lottery> call, Response<Lottery> response) {
Log.d(TAG, "getting Draw Date");
Log.d(TAG, "Draw Date is: " + response.body().getDrawDate());
String DRAW_DATE = response.body().getDrawDate();
drawDate.setText("DRAW_DATE");
Log.d(TAG, "done setting Draw Date");
}
@Override
public void onFailure(Call<Lottery> call, Throwable t) {
Log.e("Failed", t.getMessage());
Log.d(TAG, "At onFailure - Something Failed!!");
Log.d(TAG, "error is: " + t.getCause());
}
});
}
这是我的界面:
String BASE_URL = "https://data.ny.gov/resource/h6w8-42p9.json/";
@GET("?$$app_token=xxxxxxGtxKw3s6gurSxxxxxx")
Call<Lottery> getLottery();
class Factory {
public static LotteryAPI service;
public static LotteryAPI getIstance() {
if (service == null) {
Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create()).baseUrl(BASE_URL).build();
service = retrofit.create(LotteryAPI.class);
return service;
} else {
return service;
}
}
}
这是我的 POJO:
@Generated("org.jsonschema2pojo")
public class Lottery {
@SerializedName("draw_date")
@Expose
private String drawDate;
@SerializedName("mega_ball")
@Expose
private String megaBall;
@SerializedName("multiplier")
@Expose
private String multiplier;
@SerializedName("winning_numbers")
@Expose
private String winningNumbers;
/**
*
* @return
* The drawDate
*/
public String getDrawDate() {
return drawDate;
}
/**
*
* @param drawDate
* The draw_date
*/
public void setDrawDate(String drawDate) {
this.drawDate = drawDate;
}
/**
*
* @return
* The megaBall
*/
public String getMegaBall() {
return megaBall;
}
/**
*
* @param megaBall
* The mega_ball
*/
public void setMegaBall(String megaBall) {
this.megaBall = megaBall;
}
/**
*
* @return
* The multiplier
*/
public String getMultiplier() {
return multiplier;
}
/**
*
* @param multiplier
* The multiplier
*/
public void setMultiplier(String multiplier) {
this.multiplier = multiplier;
}
/**
*
* @return
* The winningNumbers
*/
public String getWinningNumbers() {
return winningNumbers;
}
/**
*
* @param winningNumbers
* The winning_numbers
*/
public void setWinningNumbers(String winningNumbers) {
this.winningNumbers = winningNumbers;
}
}
【问题讨论】:
-
不知道哪里做错了..
-
Retrofit 无法将传入的 json 映射到您的 Lottery 类。发布 json,你会得到一些帮助。
-
这里是 JSON 数据的链接,data.ny.gov/resource/…
-
[{"draw_date":"2016-10-04T00:00:00.000","mega_ball":"01","multiplier":"05","winning_numbers":"18 29 30 54 66"} ,{"draw_date":"2016-09-30T00:00:00.000","mega_ball":"09","multiplier":"05","winning_numbers":"21 30 47 50 57"} ,{"draw_date":"2016-09-27T00:00:00.000","mega_ball":"04","multiplier":"04","winning_numbers":"14 16 26 53 72"} ,{"draw_date ":"2016-09-23T00:00:00.000","mega_ball":"14","multiplier":"03","winning_numbers":"01 05 08 25 62"} ]
-
这是 JSON DATA Ivan 的示例,再次感谢,任何帮助都会很棒。
标签: java android gson retrofit