Когда вы используете Retrofit с Gson, вы обычно копируете json в java-модели. Вы сделали это правильно с Brita
, но это просто элемент внутри массива value
:
{
"cotacaoCompra":3.9347,
"cotacaoVenda":3.9353,
"dataHoraCotacao":"2019-04-26 13:11:30.05"
}
(На самом деле, если вы просто заинтересованы в cotacaoCompra
, вы можете просто удалить все остальные поля из Brita
и просто оставить cotacaoCompra
.)
Проблема в том, что Gson попытается десериализовать json, который соответствует Brita
, что не так. Ваш json - это объект с полем с именем value
, который является массивом Brita
объектов. Итак, давайте повторим это в Java POJO:
class BritaResponse {
@SerializedName("value")
private List<Brita> value;
// getters and setters
}
BritaResponse
- это объект, который имеет список Brita
объектов.
Теперь вы можете определить вызов Retrofit следующим образом:
@GET("CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='04-26-2019'&$top=1&$format=json&$select=cotacaoCompra,cotacaoVenda,dataHoraCotacao")
Call<BritaResponse> recuperarBitcoin();
Теперь будет возвращено BritaResponse
. Вам потребуется получить доступ к полю value
, а затем к первому элементу массива в ответе о модернизации.
Редактировать
Чтобы ответить на ваши комментарии. BritaResponse
это новый класс. Чтобы получить доступ к первому элементу, внутри onResponse
вам просто нужно сделать что-то вроде:
call.enqueue(new Callback<BritaResponse>() {
@Override
public void onResponse(Call<BritaResponse> call, Response<BritaResponse> response) {
BritaResponse britaResponse = response.body();
if (response.isSuccessful()) {
login_login.setText(
britaResponse.getValue().get(0).getCotacaoCompra());
}
}