«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно извлечь вложенные данные JSON с помощью специального конвертера Gson при модернизации?

Как эффективно извлечь вложенные данные JSON с помощью специального конвертера Gson при модернизации?

Опубликовано 21 декабря 2024 г.
Просматривать:498

How to Efficiently Extract Nested JSON Data Using a Custom Gson Converter in Retrofit?

Извлечение вложенного JSON с помощью пользовательского конвертера Gson при модернизации

Многие API предоставляют ответы с общей структурой JSON, где корневой объект включает вложенный Поле «content», содержащее нужные данные. Однако большинство POJO моделируют только данные в поле «контент», в результате чего адаптер модифицированного типа не может извлечь и вернуть соответствующий объект.

Для решения этой проблемы можно разработать специальный десериализатор Gson для извлечения " content» и вернуть внедренный объект. Вот как это сделать:

Пользовательский десериализатор:

Создайте класс, реализующий интерфейс JsonDeserializer для нужного типа POJO. Например, для POJO «Содержимое»:

class ContentDeserializer implements JsonDeserializer {
    @Override
    public Content deserialize(JsonElement je, Type type, JsonDeserializationContext jdc)
        throws JsonParseException {
        // Extract the "content" element
        JsonElement content = je.getAsJsonObject().get("content");

        // Deserialize the content using a new Gson instance
        return new Gson().fromJson(content, Content.class);
    }
}

Конфигурация Gson:

Зарегистрируйте пользовательский десериализатор с помощью экземпляра GsonBuilder:

Gson gson = new GsonBuilder()
    .registerTypeAdapter(Content.class, new ContentDeserializer())
    .create();

Этот экземпляр Gson теперь можно использовать для десериализации ответов JSON непосредственно во встроенный объект «Содержимое».

Модернизация интеграции:

Наконец, используйте пользовательский конвертер Gson при создании экземпляра Retrofit:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(url)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .build();

Теперь, когда Retrofit десериализует ответы API, он будет использовать собственный преобразователь для извлечения только поля «content» и возврата соответствующего типа POJO.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3