-1
第一個JSON字符串是這樣的:java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap不能轉換到我的Java bean類
{
"code": "2000",
"msg": "success",
"data": {
"khmc": "some company",
"contact": "jack",
"phone": "18888888888",
"address": "Shanghai"
}
}
第二JSON字符串是這樣的:
{
"code": "2000",
"msg": "success",
"data": "add success"
}
服務器返回的json有兩種類型,如上所述。
改裝版和rxjava的版本是這樣的:
//ReactiveX
compile 'io.reactivex:rxjava:1.2.3'
compile 'io.reactivex:rxandroid:1.2.1'
//Retrofit
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
在我的Android應用程序,我用MVP來構建我的應用程序,我的片段只能有一個演示實例,所以在我的片段,我用只有一個Presenter實例發送兩種請求服務器API的類型,onNext回調只有一個。像下面的主要代碼:
public class AddFormFragment extends MvpFragment<AddFormPresenter> implements IAddFormView {
@Override
public void onNext(JudiciaryHttpResult judiciaryHttpResult) {
switch (judiciaryHttpResult.code) {
case Constants.JudiciaryResponseCode.JUDICIARY_SUCCESS_CODE:
if (judiciaryHttpResult.data != null) {
Object object = judiciaryHttpResult.data;
if (object instanceof String) {
ToastUtil.showShort(object.toString());
} else {
JudiciaryUser user = (JudiciaryUser) object;
mKhmcEt.setText(user.getKhmc());
mContactEt.setText(user.getContact());
mPhoneEt.setText(user.getPhone());
mAddressEt.setText(user.getAddress());
}
}
break;
}
}
}
}
的JudiciaryHttpResult是象下面這樣:
public class JudiciaryHttpResult<T> {
public int code;
public String msg;
public T data;
}
的JudiciaryUser是象下面這樣:
public class JudiciaryUser {
public String khmc;
public String contact;
public String phone;
public String address;
}
當我拿到onNext回調在我的片段中, else塊的第一行代碼如下:
JudiciaryUser user = (JudiciaryUser) judiciaryHttpResult.data;
我會得到像問題標題的例外,任何人都可以幫助我嗎?