У меня странная проблема при переносе кода с Java 8 и Sprint Boot 1.X на 11 и 2.X. Ранее я обнаружил, что Джексон сериализует private boolean isAvailable
как в available: false
, так и в isAvailable: false
. Чтобы добавить больше путаницы, Ломбок идет с нами, поэтому я не могу видеть, что происходит с получателем, и если это вызывает конфликт. Ниже приведен код класса Java:
@Data
public class Availability{
@JsonProperty("isAvailable")
private boolean isAvailable;
}
И восстановленный JSON из картографа объектов Джексона был:
"Availability" : [{
"isAvailable" : false,
"available" : false }]
Это было с Джексоном 2,8. Теперь с Jackson 2.10 я получаю только isAvailable: false
как результат в JSON от ObjectMapper.
"Availability" : [{
"isAvailable" : false }]
Мне кажется логичным, что оно должно соответствовать только имени переменной Java, но, к сожалению, в контракте есть обе версии, и я не хочу менять контракт. Некоторые используют это, а некоторые нет. Я знаю, что настраиваемый сериализатор возможен, но не знаю, как это сделать и если это необходимо.