首页 > 解决方案 > 如何使用 Retrofit 2 从查询中获取一个对象?

问题描述

我想从 JSONArray 中获取一个用户作为 JSONObject。他将电子邮件作为数据库中的唯一值。

如果我这样打电话:

@GET("users")
Call<List<User>> getUser(@Query("email") String email);

我必须以这种方式接收数据:

call.enqueue(new Callback<List<User>>() {
    @Override
    public void onResponse(@NonNull Call<List<User>> call,
                           @NonNull Response<List<User>> response) {
        List<User> users_list = response.body();

        if (users_list != null) {
               User user = users_list.get(0);
            }
        }

        @Override
        public void onFailure(@NonNull Call<List<User>> call, @NonNull Throwable t) {

        }
    });

因为我的调用返回一个只有一个元素的列表。有没有其他方法可以直接获取对象,而不是在列表中?

我得到的回应是:

[
    {
        "id": 17,
        "email": "myemail@gmail.com",
        ...
    }
]

我只想得到:

{
    "id": 17,
    "email": "myemail@gmail.com",
    ...
}

如果我更换

List<User> with User

在 GET 方法和调用中它不起作用。我正在寻找一些方法,如 C# 中 .NET Core 2 中的 FirstOrDefault() 或类似方法。谢谢!

标签: androidjsonretrofit2

解决方案


推荐阅读