GSON 没有将值与 kotlin 中的数据类映射



>嗨,我正在使用gson库将响应值映射到模型。我这样做,但它没有将响应值映射到模型。我正在获得 50 个模型的列表,但其中的值为零。

@Provides
@Singleton
fun provideRestApiHelper(
okHttpClient: OkHttpClient,
gson: Gson,
rxJava2CallAdapterFactory: RxJava2CallAdapterFactory): RestApi {
val builder = Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addCallAdapterFactory(rxJava2CallAdapterFactory)
.addConverterFactory(GsonConverterFactory.create(gson))
val retrofit = builder.client(okHttpClient).build()
return retrofit.create(RestApi::class.java)
}

RestApi.kt

interface RestApi {
@GET(ApiEndPoint.ENDPOINT_GITHUB_JOBS)
fun getJobsApiCall(): Observable<List<JobsResponse>>
}

ApiHelperImpl.kt

class ApiHelperImpl @Inject constructor(private val restApi: RestApi) : ApiHelper {
override fun getJobsApiCall(): Observable<List<JobsResponse>> {
return restApi.getJobsApiCall()
}
}

JobsResponse.kt

data class JobsResponse(
@field:SerializedName("company_logo")
val companyLogo: String?,
@field:SerializedName("how_to_apply")
val howToApply: String?,
@field:SerializedName("created_at")
val createdAt: String?,
@field:SerializedName("description")
val description: String?,
@field:SerializedName("location")
val location: String?,
@field:SerializedName("company")
val company: String?,
@field:SerializedName("company_url")
val companyUrl: String?,
@field:SerializedName("id")
val id: String?,
@field:SerializedName("title")
val title: String?,
@field:SerializedName("type")
val type: String?,
@field:SerializedName("url")
val url: String?
) : BaseResponse()

我称此 API https://jobs.github.com/positions.json。有谁知道可能是什么问题?

这是因为您依赖于自动转换的 Java 代码

删除@field:SerializedName将其更改为@SerializedName

不要把它们放进去primary constructor

像这样定义它们:

data class JobsResponse(){
@SerializedName("company_logo")
val companyLogo: String? = null

....
}

最新更新