如何使用 Retrofit 查询过滤器 json

How to query filter json with Retrofit

我有 api 那个 return 工人名单:

{
  "items": [
    {
      "id": "e0fceffa-cef3-45f7-97c6-6be2e3705927",
      "avatarUrl": "https://cdn.fakercloud.com/avatars/marrimo_128.jpg",
      "firstName": "Dee",
      "lastName": "Reichert",
      "userTag": "LK",
      "department": "back_office",
      "position": "Technician",
      "birthday": "2004-08-02",
      "phone": "802-623-1785"
    },
    {
      "id": "6712da93-2b1c-4ed3-a169-c69cf74c3291",
      "avatarUrl": "https://cdn.fakercloud.com/avatars/alterchuca_128.jpg",
      "firstName": "Kenton",
      "lastName": "Fritsch",
      "userTag": "AG",
      "department": "analytics",
      "position": "Orchestrator",
      "birthday": "1976-06-14",
      "phone": "651-313-1140"
    },
    ....
    ]
  }

我想过滤响应,以便只获取有关特定部门工作人员的信息。 我试着这样做:

interface WorkersApi {
    @GET("users")
    suspend fun getWorkers(
            @Query("department") department: String
    ): Workers
}

但它 return 是同一个列表,没有任何过滤器。如何过滤响应以便我只获取特定部门工作人员的信息?

*Workers 只是数据 class,它只包含一个字段 - 项目列表(workers)

您尝试执行的操作更改了对服务器的请求。它将部门作为请求的查询参数发送。如果服务器不支持此参数,则不会发生任何事情。我不知道您是否与控制后端的人员一起工作,但您可以与他们讨论是否可以为过滤结果添加功能。

相反,如果您想在从服务器获取完整列表后过滤结果,只需对您获取的列表应用过滤器即可。

您可以在您的 Workers 对象上执行此操作

val department = "example"
val filteredList = workersObject.items.filter {it.department == department}