你好)希望你能帮助我。
使用 kotlin (Retrofit2 + moshi) 我从“https://api.spacexdata.com/v3/launches”获取数据并解析它。
一切都很顺利(我得到的属性如下:flight_number、mission_name),但有些属性为“null”,例如“mission_patch” - 有 111 个对象。其中 109 个对象在“mission_patch”处有数据,2 个对象没有该数据(“mission_patch”:null)。
我的问题:moshi 无法正确解析包含 null 的属性。
如果我使用:
data class SpaceXProperty(
val flight_number: Int,
val mission_name: String,
val mission_patch: String)
我收到错误:“失败:$[1] 处缺少所需值“mission_patch”” - 好的,我将数据类更改为下一个:
data class SpaceXProperty(
val flight_number: Int,
val mission_name: String,
val mission_patch: String?)
这样我就得到了数据,但是每个对象都有mission_patch = null。这是不正确的,因为只有 2 个对象的 Mission_patch=null,而不是全部。
请帮帮我。我是 kotlin 的新手,我做错了什么?
我的改造服务:
private const val BASE_URL = "https://api.spacexdata.com/v3/"
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
private val retrofit = Retrofit.Builder()
.addConverterFactory(MoshiConverterFactory.create(moshi))
//.addConverterFactory(ScalarsConverterFactory.create())
.baseUrl(BASE_URL)
.build()
interface SpaceXApiService {
@GET("launches")
suspend fun getProperties():List<SpaceXProperty>
}
object SpaceXApi{
val retrofitservice :SpaceXApiService by lazy {
retrofit.create(SpaceXApiService::class.java)
}
}