Как автор 2-го поста, на который вы ссылались, я также ссылаюсь на реализацию PostArrayOrSingleDeserializer
, описанную в этом моем ответе .
При использовании Gson с Retrofit (преобразователь-преобразователь Retrofit-gson) вам просто нужно зарегистрировать адаптер с пользовательским экземпляром Gson
и создать экземпляр Retrofit
с этим экземпляром Gson
, см. Ниже пример вспомогательного класса:
public class MyRetrofit {
public static MyAPI getMyApi() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Object.class,
new ObjectArrayOrSingleDeserializer())
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://example.org")
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
return retrofit.create(MyAPI.class);
}
}
Таким образом, Object
в JsonDeserializer
с именем ObjectArrayOrSingleDeserializer
- это DTO, который вы должны проверить для отдельного экземпляра или массива. Замените Object
соответствующим DTO и измените десериализатор соответственно.