Я пытаюсь использовать флаг Джексона на objectMapper
objectMapper.enable(DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES);
Это должно привести к сбою десериализации объекта, если аргумент конструктора не задан в json. т.е. если поле отсутствует, а не равно нулю.
Но я заметил, что это работает, только если объект, который я хочу десериализовать, имеет конструктор, подобный этому
public MyObject(@JsonProperty("id") UUID id, @JsonProperty("url") URL url) {
this.id = id;
this.url = url;
}
Это немного проблематично, так как я надеялся использовать @AllArgsConstructor от lombok для генерации конструктора. Но если в конструкторе отсутствует @JsonProperty (..), проверка FAIL_ON_MISSING_CREATOR_PROPERTIES не работает. Вместо этого параметры передаются как нулевые.
Я сталкивался здесь с некоторыми решениями Не могу заставить Джексона и Ломбока работать вместе . Но пока они не работают на меня.
Есть предложения?
--- Обновление ---
Аннотации в моем классе:
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
public class MyClass { ... }