如何使用 Retrofit 查询过滤器 json
Posted
技术标签:
【中文标题】如何使用 Retrofit 查询过滤器 json【英文标题】:How to query filter json with Retrofit 【发布时间】:2021-12-17 18:27:56 【问题描述】:我有返回工人列表的 api:
"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
但它返回相同的列表,没有任何过滤器。如何过滤响应,以便仅获取有关特定部门工作人员的信息?
*Workers 只是一个只包含一个字段的数据类 - 项目列表(工人)
【问题讨论】:
【参考方案1】:您尝试执行的操作会更改对服务器的请求。它将部门作为查询参数与请求一起发送。如果服务器不支持此参数,则不会发生任何事情。我不知道您是否与控制后端的人一起工作,但您可以与他们讨论他们是否可以为过滤结果添加功能。
如果您想在从服务器获取完整列表后过滤结果,只需在您获得的列表上应用过滤器即可。
您可以在 Workers
对象上执行此操作
val department = "example"
val filteredList = workersObject.items.filter it.department == department
【讨论】:
哦,谢谢。这是我最害怕的。我认为您是对的,服务器不支持此功能以上是关于如何使用 Retrofit 查询过滤器 json的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有查询的情况下在 Retrofit 中提取 Json 数据