为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用retrofit2接收Json数组(“结果”)

如何使用retrofit2接收Json数组(“结果”)

哔哔one 2021-11-03 14:30:41
我知道如何接收这种类型的数组:[{    "username": "luis",    "job": "developer",    "age": 23}]我的问题是当我必须接收一个具有特定名称的数组时,如下所示:{"result":[{"userid":"1","username":"Luis","job":"developer","age":"23"}]}在这种情况下,我必须使用retrofit2 接收上面名为“result”的数组。任何人都可以帮助我我是 Retrofit 的新手。这是我尝试过的:主要活动apiInterface = ApiClient.getApiClient().create(ApiInterface.class);       Call<List<Workers>> call = apiInterface.getWorkers();       call.enqueue(new Callback<List<Workers>>() {           @Override           public void onResponse(Call<List<Workers>> call, Response<List<Workers>> response) {               list=response.body();               adapter = new WorkerAdapter(getApplicationContext(),list);               recyclerView.setAdapter(adapter);           }           @Override           public void onFailure(Call<List<Workers>> call, Throwable t) {           }       });Api客户端:public class ApiClient {    public static final String BASE_URL="http://192.168.31.206/test1_database/";    public static Retrofit retrofit = null;    public static Retrofit getApiClient(){        if (retrofit==null){            retrofit=new Retrofit.Builder().baseUrl(BASE_URL)                    .addConverterFactory(GsonConverterFactory.create()).build();        }        return retrofit;    }}接口:public interface ApiInterface {    @GET("getAllUser.php")    Call<List<Workers>> getWorkers();}我的 POJO 或 Workers 类:public class Workers {    @SerializedName("username")    String Name;    @SerializedName("job")    String Job;    @SerializedName("age")    int Age;    public String getName() {        return Name;    }    public String getJob() {        return Job;    }    public int getAge() {        return Age;    }} 最后是我的 RecyclerAdpter:public class WorkerAdapter extends RecyclerView.Adapter<WorkerAdapter.ViewHolder>{    Context context;    List<Workers> list;    public WorkerAdapter(Context context,List<Workers> list) {        this.context = context;        this.list = list;    }我已经被困了两天了,我仍然无法解决它。请帮忙!
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

创建一个名为 Result 的类模型,并在 Interface 类中编写以下代码:


 @GET("your endpoint")

 Call<Result>getResult();

并在 Result 类中编写以下代码:


 @SerializedName("result") 

 private List<UserInfo> userInfo;

祝你好运。


查看完整回答
反对 回复 2021-11-03
?
桃花长相依

TA贡献1860条经验 获得超8个赞

如果你必须使用这种 json 格式


{"result":[{"userid":"1","username":"Luis","job":"developer","age":"23"}]}

你必须像这样创建两个模型:


class Result {


     @SerializedName("result")

     @Expose

     List<ResultDetail> result; 


class ResultDetail {


     @SerializedName("userid")

     @Expose

     String userId ;// use int instead 

     String username;

     String job;

     String age; // use int instead

}

将 GsonConverterFactory 添加到您的应用程序 build.gradle


com.squareup.retrofit2:converter-gson:2.14

现在构建改造实例:


 Retrofit retrofit = new Retrofit.Builder()

.baseUrl("some base url like : www.example.com/api/")

.addConverterFactory(GsonConverterFactory.create())

.build();


 YourSerivce service = retrofit.create(YourService.class);



 interface YourService {

   @GET("someThing")  // complete url is www.example.com/api/someThing

   Call<Result> getResult();

 }

最后得到这样的结果:


retrofit.getResult().enqueue(.....)


查看完整回答
反对 回复 2021-11-03
?
慕少森

TA贡献2019条经验 获得超9个赞

package com.example;


import java.util.List;


public class Example {


private List<Result> result = null;


public List<Result> getResult()

{

    return result;

}


public void setResult(List<Result> result)

{

    this.result = result;

}}




package com.example;



public class Result {


private String userid;

private String username;

private String job;

private String age;


public String getUserid()

{

    return userid;

}


public void setUserid(String userid)

{

    this.userid = userid;

}


public String getUsername()

{

    return username;

}


public void setUsername(String username)

{

    this.username = username;

}


public String getJob()

{

    return job;

}


public void setJob(String job)

{

    this.job = job;

}


public String getAge()

{

    return age;

}


public void setAge(String age)

{

    this.age = age;

}}

使用本网站制作一些模型。我已经使用这个网站完成了上面的代码。


现在,这样做


@Get<"url">

call<Example> get()


查看完整回答
反对 回复 2021-11-03
  • 3 回答
  • 0 关注
  • 417 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信