Есть ли какая-либо стратегия Джексона json (с использованием аннотаций или другим способом), который будет выполнять некоторую логику до и после десериализации поля?

Мне нужно выполнить некоторый код после каждой десериализации полей POJO. Есть ли способ сделать это с помощью какой-либо стратегии аннотации Джексона (или другой)?

  1. Один из способов сделать это - создать собственный десериализатор для каждого типа поля, который будет реализовывать PostLogicDeserializerInterface или расширять PostLogicDeserializerAbstract. Но это создаст массу загромождающего кода, который будет трудно поддерживать (вместо простого использования @JsonProperty). Так что я думаю, что это плохая идея.

  2. Я видел, что вы можете использовать @JsonDeserialize на уровне класса, но только для классов значений. Из документации:

При аннотировании классов значений конфигурация используется для экземпляров класса значений, но может быть отменена более конкретными аннотациями (теми, которые прикрепляются к методам или полям).

Так что я думаю, что это тоже не сработает.

  1. Использование некоторой пользовательской логики в методах установки POJO - плохая практика! А с другой стороны, я думаю, что Джексон в любом случае использует отражение для установки полей ... Тоже не лучшая стратегия

Моя цель - определить процент полей, которые были установлены десериализатором. Мне понадобится счетчик, который будет увеличиваться при каждой запущенной десериализации (заполненное поле). И как только десериализация всего класса (POJO) закончится, мне нужно будет выполнить некоторую логику, используя отражение.

То, как реализовано сейчас , - это

  • , как только POJO десериализует устройство отображения Джексона, я просматриваю каждое поле, используя отражение
  • , проверяю, было ли оно установлено, fi если он равен нулю или -1 для примитивных чисел (ранее начальные значения). (одна из сторон этого подхода заключается в том, что вы не можете проверить логическое значение, если оно было установлено)
  • используйте отражение для другого типа проверки (назовем его логикой X)
  • выполните логику, которая зависит от процента установленных полей и логика X.

Я бы предпочел некоторую стратегию Джексона, поскольку мне не нужно было бы проверять POJO с помощью отражения. Лучше сделать это на месте (в то время, когда POJO десериализуется).

Ура,
Я просматриваю каждое поле, используя отражение

  • , проверяю, установлено ли оно, fi если оно равно нулю или -1 для примитивных чисел (ранее начальные значения). (одна из сторон этого подхода заключается в том, что вы не можете проверить логическое значение, если оно было установлено)
  • используйте отражение для другого вида проверки (назовем его логикой X)
  • выполните логику, которая зависит от процента установленных полей и логика X.
  • Я бы предпочел некоторую стратегию Джексона, поскольку мне не нужно было бы проверять POJO с помощью отражения. Лучше сделать это на месте (в момент десериализации POJO).

    Ура,
    Я просматриваю каждое поле, используя отражение

  • , проверяю, установлено ли оно, fi если оно равно нулю или -1 для примитивных чисел (ранее начальные значения). (одна из сторон этого подхода заключается в том, что вы не можете проверить логическое значение, если оно было установлено)
  • используйте отражение для другого типа проверки (назовем его логикой X)
  • выполните логику, которая зависит от процента установленных полей и логика X.
  • Я бы предпочел некоторую стратегию Джексона, поскольку мне не нужно было бы проверять POJO с помощью отражения. Лучше сделать это на месте (в то время, когда POJO десериализуется).

    Ура,
    t проверить логическое значение, если оно было установлено)

  • использовать отражение для какого-либо другого вида проверки (назовем его логикой X)
  • выполнить логику, которая зависит от процента установленных полей и логики X.
  • Я бы предпочел некоторые Джексона, поскольку мне не нужно было бы проверять POJO с помощью отражения. Лучше сделать это на месте (в то время, когда POJO десериализуется).

    Ура,
    t проверить логическое значение, если оно было установлено)

  • использовать отражение для какого-либо другого вида проверки (назовем его логикой X)
  • выполнить логику, которая зависит от процента установленных полей и логики X.
  • Я бы предпочел некоторые Джексона, поскольку мне не нужно было бы проверять POJO с помощью отражения. Лучше сделать это на месте (в то время, когда POJO десериализуется).

    Ура,
    Despot

    9
    задан despot 2 April 2011 в 10:32
    поделиться