Я пытаюсь изменить этот код проекта (https://github.com/rygelouv/networkcall-sample) для получения данных с другого URL-адреса, но я не могу исправить ошибку "Ожидается BEGIN_OBJECT, но был BEGIN_ARRAY" при ответе.
Json ответ как
[{"value":"1","label":"ADMIN"},{"value":"2","label":"EMPLOYEE_1"}...]
в то время как исходный ответ был
{"count": 61700,"result: false,"items": [{"id": 3436,"node":DEwOlJlyMjY2"...},{....}]}
Я знаю, что должен изменить тип возвращаемого значения, чтобы принять тип массива, но я не могу понять, как и где это сделать из-за DSL.
В приведенном ниже коде я изменил только класс репозитория в соответствии со своими потребностями:
object Repository {
fun getRepos() = networkCall<ReposResponse, List<Employee>> {
client = GithubAPI.githubService.getRepos()
var result = GithubAPI.githubService.getRepos()
}
}
data class Employee(
@SerializedName("label")
val name: String,
@SerializedName("value")
val idEmployee: String
)
data class ReposResponse(val items: List<Employee>): BaseApiResponse<Employee>(), DataResponse<List<Employee>> {
override fun retrieveData(): List<Employee> = items
}
abstract class BaseApiResponse<T> {
var total_count: Int = 0
var incomplete_results: Boolean = false
}
object GithubAPI {
var API_BASE_URL: String = "my_url"
var httpClient = OkHttpClient.Builder()
var builder: Retrofit.Builder = Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(CoroutineCallAdapterFactory())
var retrofit = builder
.client(httpClient.build())
.build()
var githubService = retrofit.create<GithubService>(GithubService::class.java)
interface GithubService {
@GET("workstation")
fun getRepos(): Deferred<Response<ReposResponse>>
}
Какие изменения я должен сделать, чтобы это работало с моим классом данных?