Retrofit2: Почему объект нулевой, если ответ сервера в порядке, а GSON не сообщил о проблеме разбора? - PullRequest
0 голосов
/ 07 марта 2019

enter image description here

Почему price здесь равно нулю?

JSON извлекается из здесь (вы также можете использовать несколько параметров, поэтому нижеприведенный объект использует Map s; пример ).Вот CoinGeckoCoinPrice:

public class CoinGeckoCoinPrice {
    @Expose
    private Map<String, Map<String, Double>> price;

    public double getPrice(String slug, String pair) {
        ...
    }
}

Вот мой вызов Retrofit2:

@GET("/api/v3/simple/price")
Call<CoinGeckoCoinPrice> getCoinPrice(@Query("ids") String coinSlugs, @Query("vs_currencies") String pairs);

Я проверил logcat на наличие любого сообщения об ошибке GSON, но его нет.Так почему бы price быть нулевым?


Это работает, если я изменю вызов Retrofit2 на использование JsonObject:

@GET("/api/v3/simple/price")
Call<JsonObject> getCoinPrice(@Query("ids") String coinSlugs, @Query("vs_currencies") String pairs);

Но я хочу обернуть объект, чтобы я могнаписать функции поиска данных в классе CoinGeckoCoinPrice.

1 Ответ

2 голосов
/ 07 марта 2019

Json, который вы получаете, не имеет свойства price, поэтому Гсон не знает, что он должен анализировать объект bitcoin и его цену в долларах США для этого объекта.Учитывая, что ваши возвращенные данные могут быть для любого ключа (например, биткойн, ethereum ...) и его свойства также могут иметь любые ключи (например, usd, евро ...), вам нужно будет вручную проанализировать это, предоставив Gson специальный адаптерработать с.

...