我有一个API,为了获取数据,我必须发送JSON参数。这是必须在@Body
中发送以获取数据的JSON。
{
"ViewName": "Members_HousholdAdmin",
"DataRequest":{
"filter":[{
"field":"",
"logic":"",
"operator":"",
"value":""
}],
"offset":0,"take":0,
"Sort":[{"field":"","dir":""}]
},
"parameters":[
{"key": "%FundId","value": "1" }
]
}
它可以在postman
中使用,但是在Android中,出现以下错误:
Expected BEGIN_ARRAY but was STRING at line 1 column 2 path $
我想这是我模型中的问题,但我无法解决。
我的模特:
public class SendParametersGetData {
@SerializedName("ViewName")
public String ViewName;
@SerializedName("DataRequest")
public DataRequest DataRequest = null;
@SerializedName("Parameters")
public List<Parameters> parameters = null;
}
public class DataRequest {
@SerializedName("take")
public int take=0;
@SerializedName("offset")
public int offset=0;
@SerializedName("filter")
public ArrayList<Filter> filter;
@SerializedName("Sort")
public ArrayList<Sort> Sort;
}
public class Parameters {
@SerializedName("value")
public String value;
@SerializedName("key")
public String key;
public Parameters(String key, String value) {
this.value = value;
this.key = key;
}
}
sort
和filter
还有2种型号。我使用翻新和RXJava。
@POST("test.php")
Single<ArrayList<Members>> getMembers(@Body SendParametersGetData sendParametersGetData);
我使用构造函数设置了SendParametersGetData
(在此示例中仅设置了ViewName
和Parameters
),并将其作为getMembers
方法的输入。
ArrayList<Parameters> parameters = new ArrayList<>();
parameters.add(new Parameters("%FundId",String.valueOf(fund.getFundId())));
SendParametersGetData sendParametersGetData = new SendParametersGetData("Members_HousholdAdmin",parameters);
dataSource.getMembers(sendParametersGetData).subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<ArrayList<Members>>() {
@Override
public void onSubscribe(Disposable d) {
compositeDisposable.add(d);
}
@Override
public void onSuccess(ArrayList<Members> members) {
}
@Override
public void onError(Throwable e) {
view.hideProgress();
TastyToast.makeText(view.getContext(), e.toString(), 6000, TastyToast.ERROR);
}
});
答案 0 :(得分:2)
我在您的模型类中发现以下错误。
Parameters
需要重命名为parameters
以与JSON密钥匹配。
@SerializedName("parameters")
public List<Parameters> parameters = null;
我猜这应该可以解决您的问题。我认为其他模型类都不错。