将数据模型转换为 Android 中的另一个和 api 调用
Posted
技术标签:
【中文标题】将数据模型转换为 Android 中的另一个和 api 调用【英文标题】:translate a data model to another and api call in Android 【发布时间】:2021-07-23 09:06:04 【问题描述】:我正在尝试将一个数据类映射到另一个数据类,但在此过程中我还需要调用以获取附加信息
下面的代码是一个基本的协程调用
override suspend fun getUsersList(
name: String?): ResultList<List<GitHubUserListResult>> =
withContext(ioDispatcher)
val request = api.searchUsers(name)
request.data --> contain the list of `User`
//map User to GitHubUserListResult and place api all to recover the missing information
ResultList.Success(emptyList()) --> will be the list of `GitHubUserListResult`
数据类用户是:
data class User (
val login: String?,
val avatar_url: String
)
数据类GitHubUserListResult:
data class GitHubUserListResult (
val login: String?,
val avatar_url: String,
val public_repos: Int
)
public_repos
需要对 api.getUsernameInfo(username)
进行新的 api 调用以恢复 repos 的数量,然后将其添加到 GitHubUserListResult
api.getUsernameInfo(username)
将返回以下数据类:
data class UserInfo (
val public_repos: Int
)
知道如何进行此映射和 api 调用吗?
【问题讨论】:
【参考方案1】:override suspend fun getUsersList(name: String?): ResultList<List<GitHubUserListResult>> = withContext(Dispatchers.IO)
val asyncJobs = api.searchUsers(name).map user ->
async getGithubInformation(user)
return ResultList.Success(asyncJobs.awaitAll())
您可能必须包含一些用于捕获异常并转换为 ResultList.Error
之类的逻辑
【讨论】:
感谢罗伯特 asyncJobs。只返回 List以上是关于将数据模型转换为 Android 中的另一个和 api 调用的主要内容,如果未能解决你的问题,请参考以下文章
如何将可绘制背景设置为仅将数字字符串转换为 android 中的另一个字符串?
Drools将一个对象的列表转换为drools中的另一个对象的列表