在 Kotlin 中处理成功和错误的两种不同 Retrofit 响应

Handling two different Retrofit responses for success and error in Kotlin

我正在 Kotlin 中构建一个 android 应用程序,响应有成功和错误两种不同的结构。我的问题是,我可以将这两个响应组合在一起并创建一个数据 class,还是应该为此创建一个密封的 class? 成功响应:

{
    "access_token": "xxxxxxxxxxxxxxxxxxxx",
    "token_type": "bearer"
}

错误响应:

{
    "detail": [
        {
            "loc": [
                "body"
            ],
            "msg": "Invalid credentials",
            "type": "invalid-credentials"
        }
    ]
}

那么我可以这样写在一个数据里吗class或者用一个密封的class?

data class Auth (
   val access_token: String,
   val token_type: String,
   val details: Details
)

是的,尝试将所有数据组合成一个数据class。只需将所有变量设为可选即可。

data class Auth (
   val access_token: String?,
   val token_type: String?,
   val detail: List<Detail>?
)

编辑:关于如何访问嵌套数据。很简单。

data class Detail ( 
  val loc: List<String>,
  val msg: String,
  val type: String
)

然后当发生错误时,您可以使用类似 val msg = auth.detail?.msg

的方式访问数据