У меня есть JSON, как следующее:Джексон Stateful Десериализация
{
systemId: 7
name: "Phil"
data: "XYZ"
pointers: [
{
systemId: 23
name: "Peter"
},
{
systemId: 27
name: "Jeroen"
}
]
}
В POJO эквивалент выше JSON, все поля являются окончательными. Теперь, во время десериализации, я хочу иметь возможность модифицировать поле systemId, прежде чем он будет установлен на POJO by Jackson. Кроме того, измененная системаId будет фактически предоставляться объектом с сохранением состояния как функцией текущей системы Id из JSON. Например, новый SYSTEMID быть установлен на десериализованном POJO может быть предоставлен экземпляром класса, например следующим образом:
public class SystemIdProvider {
...
public long getNewSystemId(long oldSystemId) {
// do something with the oldSystemId and
// the current state of this object to get the newSystemId
return newSystemId;
}
}
Есть ли способ, я могу предоставить экземпляр указанного класса Джексону, когда он десериализует JSON и заставляет Джексона использовать этот объект, чтобы получить newSystemId, прежде чем устанавливать его на POJO, который он создает?
Обратите внимание, что JSON выше - это всего лишь небольшой фрагмент фактического JSON и, следовательно, может содержать сотни таких объектов, как указано выше. И я хочу предоставить НОВЫЙ экземпляр класса SystemIdProvider для десериализации, поскольку «состояние», которое он поддерживает, также основано на идентификаторах системы, с которыми он столкнулся до сих пор. Таким образом, для каждой десериализации она должна начинаться с чистого состояния.
Любые входы оцениваются.
Я думаю, что вам нужно, чтобы исследовать некоторые из упомянутых здесь родственной, но не та же проблема - варианты http://stackoverflow.com/questions/7105745/how-to-specify-jackson- только для пользы-полей-желательно-глобально –
спасибо Wand Maker. Я уже знаю эти параметры конфигурации. – Skylark