GSON не отображает значения с классом данных в kotlin - PullRequest
0 голосов
/ 12 июня 2018

Привет. Я использую библиотеку 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. Кто-нибудь знает, в чем может быть проблема?

1 Ответ

0 голосов
/ 12 июня 2018

Это потому, что вы полагаетесь на автоматически преобразованный код Java

удалить @field:SerializedName изменил его на @SerializedName

не ставьте их на primary constructor

определить их так:

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


....

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...