预计BEGIN_ARRAY但是BEGIN_OBJECT改造2 [英] Expected BEGIN_ARRAY but was BEGIN_OBJECT retrofit2
本文介绍了预计BEGIN_ARRAY但是BEGIN_OBJECT改造2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些关于retrofit2的问题
I have some problem about retrofit2
如何修复预期的BEGIN_ARRAY但是在改造中是BEGIN_OBJECT
How to fix Expected BEGIN_ARRAY but was BEGIN_OBJECT in retrofit2
我不知道要修理它
我错了什么?
我的json是
{
"result": true,
"message": "success",
"data": [
{
"id": "10",
"type_name": "pppppp"
},
{
"id_mt": "11",
"type_name": "aaaaaa"
}
]
}
我的模特类是
public class MessageFastModel {
private boolean result;
private String message;
private List<DataBean> data;
public boolean isResult() {
return result;
}
public void setResult(boolean result) {
this.result = result;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
private String id;
private String type_name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getType_name() {
return type_name;
}
public void setType_name(String type_name) {
this.type_name = type_name;
}
}
}
我的代码是
@FormUrlEncoded
@POST("api/message_type")
Call<MessageFastModel> listMessageFast(@Field("token") String token);
和
Call<MessageFastModel> dddddCall = ooooo.listMessageFast(Preferences.getToken());
dddddCall.enqueue(new Callback<MessageFastModel>() {
@Override
public void onResponse(Call<MessageFastModel> call, Response<MessageFastModel> response) {
if (response.isSuccessful()) {
Log.d("ddd", "onResponse: " + response.body().getData().size());
}
}
@Override
public void onFailure(Call<MessageFastModel> call, Throwable t) {
Log.e("ddd", "onFailure: " + t.getMessage());
}
});
但我的错误是
E / ddd:onFailure:java.lang.IllegalStateException:预期
BEGIN_ARRAY但是BEGIN_OBJECT在第1行第44列路径$ .data
E/ddd: onFailure: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 44 path $.data
有什么问题?谢谢!
推荐答案
@GET("photos")
Call<Model> savePhoto();
并调用这样的改装方法>>>
And Call your retrofit method like this >>>
Call<Model> call = apiService.savePhoto();
call.enqueue(new retrofit2.Callback<Model>() {
@Override
public void onResponse(Call<Model> call, retrofit2.Response<Model> response) {
int statusCode = response.code();
try {
Model model;
// Log.w("resedatasync", new Gson().toJson(response));
model= response.body();
并创建这样的模型类
public class Model{
@SerializedName("ArrayName")
public List<DataBean > arraylist= new ArrayList<>();
@SerializedName("message")
private String message;
public class DataBean {
@SerializedName("id")
private String id;
@SerializedName("typename")
private String typename;
@SerializedName("typename")
public void settypename(String typename) {
this.typename= typename;
}
}
}
这篇关于预计BEGIN_ARRAY但是BEGIN_OBJECT改造2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文