Ожидается дооснащение Android BEGIN_ARRAY - PullRequest
0 голосов
/ 22 сентября 2018

У меня проблема с модернизацией.

CryptoCompareClient.java

public interface CryptoCompareClient {
@GET("/data/pricemulti")
Call<List<CryptoPrices>> multiCryptoPrices(@Query("fsyms") String crypto,
                                   @Query("tsyms") String currency);

@GET("/data/price")
Call<CryptoPrices> singleCryptoPrice(@Query("fsym") String crypto,
                                     @Query("tsyms") String currency);
}

ОТВЕТ JSON: (https://min -api.cryptocompare.com/data/pricemulti?fsyms=BTC,ETH,LSK&tsyms=USD,EUR,PLN)

{"BTC": {"USD": 6731,55, "EUR": 5716,11," PLN ": 24359,79}," ETH ": {" USD ": 244,41," EUR ": 207,73," PLN ": 905,73}," ЛСК ": {" USD ": 3,42," EUR ":2,91, "PLN": 12,49}}

RetrofitInterface.java

public class RetrofitInterface {
Retrofit retrofit = RetrofitClientInstance.getRetrofitInstance();
private static final String CURRENCY="USD,EUR,PLN,BTC";
public void multiCrypto(String names){
    CryptoCompareClient client=retrofit.create(CryptoCompareClient.class);
    Call<List<CryptoPrices>> call=client.multiCryptoPrices(names,CURRENCY);
    call.enqueue(new Callback<List<CryptoPrices>>() {
        @Override
        public void onResponse(Call<List<CryptoPrices>> call, Response<List<CryptoPrices>> response) {

        }

        @Override
        public void onFailure(Call<List<CryptoPrices>> call, Throwable t) {
            Log.d("MyCrypto", "fail retrof "+t);
        }
    });
}

}

Logcat

D / MyCrypto: ошибка retrof java.lang.IllegalStateException: ожидаемый BEGIN_ARRAY, но был BEGIN_OBJECT в строке 1 пути 2 столбца $

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Измените Call<List<CryptoPrices>> на Call<Map<String,CryptoPrices>>.Ответ - это не список, это карта строк (например, ”BTC”) с данными.

0 голосов
/ 22 сентября 2018

Ваш метод API:

@GET("/data/pricemulti")
Call<List<CryptoPrices>> multiCryptoPrices(@Query("fsyms") String crypto,
                               @Query("tsyms") String currency);

ожидает список CryptoPrices в виде массива [...], и вы предоставляете объект {...}.

Удачи в криптографии-client!

...