Как обрабатывать массив данных в ответе на модернизациюAndroid

Форум для тех, кто программирует под Android
Anonymous
Как обрабатывать массив данных в ответе на модернизацию

Сообщение Anonymous »

Я строю приложение, необходимое для извлечения некоторых данных из 2 конечных точек:/api/products и/api/type
Первая конечная точка возвращает a Json, и это работает нормально. Тем не менее, вторая конечная точка не возвращает JSON, а массив объекта.
Ответ, отправленный обратно API/type , выглядит так:

Код: Выделить всё

[["Model",123],["ModelB",456],["ModelC",789]]
Когда другие конечные точки возвращают «обычный» json. /> Модуль модернизации установлен, как ниже: < /p>

Код: Выделить всё

@InstallIn(SingletonComponent::class)
@Module
class APIModule {

@Singleton
@Provides
@Named("default")
fun provideDefaultOkHttpClient(): OkHttpClient =
OkHttpClient
.Builder()
.addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.build()

@Singleton
@Provides
fun provideRetrofit(
@Named("default") okHttpClient: OkHttpClient
): Retrofit = Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("https://test.com")
.client(okHttpClient)
.build()
}
Это работает нормально при вызове API/Products Но я получил ошибку ниже при использовании API/type :

Код: Выделить всё

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 3 path $[0]
< /code>
Служба API такая же, как ниже: < /p>
interface Service {

@GET("api/type")
suspend fun getType(): Array
>
< /code>
Я понимаю, что проблема в том, что с одной конечной точки ответ - это JSON, а в другом случае это массив, подобный: [[«Модель», 123], ["modelB" , 456], ["modelc", 789]] 
есть идея, как это сделать? мне одновременно поддерживать и JSON, и массив?

Подробнее здесь: https://stackoverflow.com/questions/794 ... t-response

Вернуться в «Android»