【问题标题】:How get object data in List using Retrofit2?如何使用 Retrofit2 获取 List 中的对象数据?
【发布时间】:2021-03-24 11:52:49
【问题描述】:

这是我使用 Retrofit 从数据库中获取的数据。我想将此数据作为 List 对象获取;

[
        {
            "id": 5,
            "name": "test12",
            "coordinate": {
                "x": 1143.9999999999995,
                "y": 575.9999999999959
            },
            "type_id": 1,
            
        },
        {
            "id": 6,
            "name": "test2222",
            "coordinate": {
                "x": 2290.15625,
                "y": 323.59374999999636
            },
            "type_id": 2,
            
        }
    ]

这是我尝试从我的数据库中调用数据的代码;

private void getHardwareCoordinates(){

        String url = Constant.baseUrl;

        TokenInterceptor interceptor=new TokenInterceptor();
        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .build();


        Retrofit retrofit = new Retrofit.Builder()
                .client(client)
                .baseUrl(url)
                .addConverterFactory(ScalarsConverterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        Api service = retrofit.create(Api .class);

        Call<List<HardwareDataResponse>> call = service.getHardwareList();
        call.enqueue(new Callback<List<HardwareDataResponse>>() {
            @Override
            public void onResponse(Call<List<HardwareDataResponse>> call, Response<List<HardwareDataResponse>> response) {
                if(response.body() != null)
                {
                    List<HardwareDataResponse> hardWareList = response.body();
                    //response data
                    
                } else {
                    //errorBody 
                }
            }
            @Override
            public void onFailure(Call<List<HardwareDataResponse>> call, Throwable t) {

               // System.out.println(t);
            }
        });

    }

这是我的序列化器类,用于将数据作为 List 对象获取;

public class HardwareDataResponse {

    @SerializedName("id")
    @Expose
    private Integer id;

    @SerializedName("name")
    @Expose
    private String name;

    @SerializedName("type_id")
    @Expose
    private Integer type_id;

    public Integer getHardwareId() {
        return id;
    }

    public void setHardwareId(Integer id) {
        this.id = id;
    }

    public String getHardwareName() {
        return name;
    }

    public void setHardwareName(String name) {
        this.name = name;
    }

    public Integer getHardwareTypeId() {
        return type_id;
    }

    public void setHardwareTypeId(Integer type_id) {
        this.type_id = type_id;
    }

}

我想使用 List hardWareList 获取“坐标”对象数据。如何添加 HardwareDataResponse 来序列化数据。

【问题讨论】:

    标签: android json retrofit2


    【解决方案1】:

    你好使用 [link][1] 创建模型类 [1]:https://www.freecodeformat.com/json2pojo.php

    【讨论】:

    • 非常感谢。我使用它,但我没有注意变量的类型。这个链接真的很有用
    猜你喜欢
    • 2019-12-24
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 2014-09-27
    • 2019-09-30
    相关资源
    最近更新 更多