решено
Я выполняю асинхронный вызов с использованием модернизации, и когда я получаю ответ JSON, просматриваю сетевой журнал Я вижу , что он содержит "urlToImage" строку снекоторый URL, но когда мой gsonfactory анализирует его в json, модель "urlToImage" ВСЕГДА null .
I сгенерированный Объект POJO с ответом JSON, который я получаю, и использовал его как модель Json - не сработало.
Я попытался проанализировать другие строки из этого ответадля теста и каждая строка является гладкой, за исключением строк «ключ» и «urlToImage».Они всегда равны нулю.
В JSON ответ "urlToImage" не равен нулю:
Моя модель JSON:
public class Article {
private Source source;
private String title;
private String description;
private String urlToImage;
----< constructor, getters and setters >----
private class Source {
private String name;
----< constructor, getters and setters >----
}
}
Точка останова, где я вижу полный анализ JSON.Также я вижу, что urlToImage всегда имеет значение null:
Пример ответа JSON (опубликован на сайте, предоставляющем API):
Моя модель ответа:
public class JSONResponseArticles {
private String status;
private Article[] articles;
public Article[] getArticles() {
return articles;
}
}
Мой GSON Factory (github) :
@Provides
@Singleton
Gson provideGson() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
return gsonBuilder.create();
}
Обновление1
Как заметил @MC_Emperor, для моего gsonbuilder было установлено FieldNamingPolicy
.Полный:
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
Итак:
Я пытался переименовать urlToImage в url_to_image - без эффекта, все еще ноль;
Я попытался настроить FieldNamingPolicy.IDENITY
документы: «использование этой политики именования с Gson гарантирует, что имя поля не изменится».- без эффекта, все еще ноль.
Я удалил FieldNamingPolicy - безрезультатно.
Я удалил GSON Builder, и теперь я просто передаю gsonfactory, как .addConverterFactory(GsonConverterFactory.create())
при создании модифицированного объекта - без эффекта, все еще ноль.
Также я нашел этот поток в проблемах Retrofit github, где разработчики называют это поведение "ошибкой" в Septerber 2015. Я не знаю, что это я, или что?
Обновление 2
в моих зависимостях у меня было только 'com.squareup.retrofit2:converter-gson:2.5.0'
, но когда я добавил 'com.google.code.gson:gson:2.8.5'
urlToImage появился со значением, отличным от нуля!ВОТ ЭТО ДА.