Выборочное игнорирование свойств JSON при десериализации с Джексоном

1

Я хочу выборочно игнорировать свойства JSON во время фазы десериализации. В настоящее время я имею дело с огромным файлом JSON, который требует времени для десериализации на медленных устройствах Android, и я хотел бы указать некоторые свойства, которые нельзя десериализовать на разных этапах жизненного цикла приложения. Проблема в том, что иногда мне нужны данные, и мне нужно иметь возможность десериализовать проигнорированные данные, когда мне это действительно нужно.

Я использую Jackson и ObjectMapper.

Пример POJO:

public class Pojo {
    private String name;
    private Map<String, String> data;

    ...
}

Пример JSON:

{
    "pojos" : [ {
        name : "Name",
        data : {
            "somedata1" : "somevalue1",
            "somedata2" : "somevalue2",
            "somedata3" : "somevalue3"
            ...
        }
    } ]
}

Будет много "pojos", и каждое свойство "data" станет ОГРОМНЫМ. Поэтому я хотел бы иногда десериализовать, игнорируя свойство data. Иногда я хочу, чтобы "данные" десериализовались нормально.

  • 0
    Нам нужно больше, чем это. Где код? Вы используете ObjectMapper? У тебя есть один класс? Ряд занятий? Вы вручную десериализируете? Каковы правила? Какова структура данных? Один из подходов состоит в том, чтобы иметь разные классы с разными аннотациями JsonIgnoreProperties, но без какой-либо информации сказать ничего не могу.
  • 0
    Я также думал о другом подходе к классам, но это означало бы, что мне нужно изменить интерфейс службы, поскольку он опирается на сериализованный тип класса. Я отредактировал вопрос с примером кода и JSON.
Показать ещё 3 комментария
Теги:
performance
jackson

1 ответ

1
Лучший ответ

используя разные классы, вы можете создать суперкласс, который соответствует классу в интерфейсе службы, а затем создать 2 или более подкласса... так что, надеюсь, ничто не должно быть изменено в службе

Ещё вопросы

Сообщество Overcoder
Наверх
Меню