如何忽略API响应中的某些字段- Retrofit @GET



我有一个get API调用。响应是这样的:

{
"id": "22222",
"resourceUri": "ssss",
"xxx": null,
"xxx": [],
"phone": "kkk",
"email": "jjjjjj",
}
在所有这些字段中,我只需要ID。所以,我创建了一个这样的类:
data class ApiResponse(
val id: String,
)

和API调用是这样的:

suspend fun apiCall(@Header("Authorization") authorization : String) :Response<ApiResponse>

它不起作用并抛出错误。我能做什么?

您提供的实现似乎没有什么问题。您的ApiResponse类可以具有比响应JSON更少的属性。

如果可能,请进一步提供您遇到的异常。



Main.kt
fun main(args: Array<String>) {
val retrofit = Retrofit.Builder().baseUrl("http://localhost")
.addConverterFactory(GsonConverterFactory.create())
.build()
val retromock = Retromock.Builder().retrofit(retrofit).build()
runBlocking {
val service = retromock.create(TestCall::class.java)
val response = service.apiCall()
println(response.body())
}
}

ApiResponse.kt

data class ApiResponse(
val id: String,
val name: String,
val remark: String,
) {
override fun toString(): String {
return "ID: $id | Name: $name | remark: $remark"
}
}

TestCall.kt

interface TestCall {
@Mock
@MockResponse(body = "{"id":"1", "name":"Smith", "age":30, "score":20, "remark":null}")
@GET("/")
suspend fun apiCall() : Response<ApiResponse>
}

输出可以打印无误:

ID: 1 | Name: Smith | remark: null

因此,在上面的示例中,您可以看到返回的JSON包含age,score等属性,这些属性不包括在ApiResponse中。因此,您可能必须检查导致错误的其他配置。

是的,你的API响应是正确的。您可以仅使用所需的数据创建响应。

data class ApiResponse(
val id: String,
)

你的错误可能是别的什么,请分享你的logcat错误,它可能被理解的错误

相关内容

  • 没有找到相关文章

最新更新