Moshi 无法解析可为 nullable
Moshi cannot parse nullable
你好)希望你能帮助我。
使用 kotlin (Retrofit2 + moshi) 我从“https://api.spacexdata.com/v3/launches”获取数据并解析它。
一切正常(我得到的属性如:flight_number、mission_name),但有些属性为“空”,如“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”- 好的,我将数据 class 更改为下一个:
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)
}
}
mission_patch
不像 flight_number
等在根对象中。它嵌套在 links
中。所以你的模型应该匹配。试试这个:
data class SpaceXProperty(
val flight_number: Int,
val mission_name: String,
val links: Links) {
data class Links(val mission_patch: String?)
}
你好)希望你能帮助我。 使用 kotlin (Retrofit2 + moshi) 我从“https://api.spacexdata.com/v3/launches”获取数据并解析它。 一切正常(我得到的属性如:flight_number、mission_name),但有些属性为“空”,如“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”- 好的,我将数据 class 更改为下一个:
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)
}
}
mission_patch
不像 flight_number
等在根对象中。它嵌套在 links
中。所以你的模型应该匹配。试试这个:
data class SpaceXProperty(
val flight_number: Int,
val mission_name: String,
val links: Links) {
data class Links(val mission_patch: String?)
}