使用嵌套的json对象进行retrofit get请求

时间:2018-03-23 08:15:30

标签: android json retrofit okhttp get-request

我试图使用Retrofit从rest api获取数据。 api是get请求,查询参数应为形式
{state: 'state', filters: {page: 1, filter: ''}}

我尝试创建一个Filter类,并在下面的

中注释相同的Request body类
public class ReferralRequestBody {
    @SerializedName("filters")
    @Expose
    private Filter filter;

    public Filter getFilter() {
        return filter;
    }

    public void setFilter(Filter filter) {
        this.filter = filter;
    }
}

这就是我现在尝试发送请求的方法。这是一个带查询参数的get请求。我需要将Filter作为查询参数发送。

@GET("/api/data") 
Observable<APIResponse> getData(@Query("state") String state, 
                             @Query("filters") RequestBody filter);

但请求仍然很糟糕。请帮忙。

1 个答案:

答案 0 :(得分:2)

创建以下模型类

C

另外,创建这个,

public class ReferralRequestBody {

    @SerializedName("state")
    @Expose
    private String state;
    @SerializedName("filters")
    @Expose
    private Filters filters;

    public String getState() {
    return state;
    }

    public void setState(String state) {
    this.state = state;
    }

    public Filters getFilters() {
    return filters;
    }

    public void setFilters(Filters filters) {
    this.filters = filters;
    }

    }

然后设置状态数据,像

一样过滤
public class Filters {

    @SerializedName("page")
    @Expose
    private Integer page;
    @SerializedName("filter")
    @Expose
    private String filter;

    public Integer getPage() {
    return page;
    }

    public void setPage(Integer page) {
    this.page = page;
    }

    public String getFilter() {
    return filter;
    }

    public void setFilter(String filter) {
    this.filter = filter;
    }

    }

并将该函数调用为,

ReferralRequestBody referralrequestbody=new ReferralRequestBody();
referralrequestbody.setState("state");

Filters filters=new Filters();
filters.setPage("page data");
filters.setFilter("filter data");