Я пытаюсь заставить Джексона десериализовать отсутствующие свойства, которые представляют коллекции в пустые коллекции вместо NULL. Я пробовал несколько разных вещей, и это последнее, что не работает.
Если есть способ сделать любое потенциальное решение глобально сконфигурированным для всей десериализации POJO, это было бы здорово.
С учетом следующего json, в котором отсутствует свойство 'assets':
{
"name":"my-layer",
"code": "ly1",
"types":["type1", "type2"],
"private": false
}
С учетом следующего POJO:
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Builder.Default;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class CreateLayerRequest {
@NotBlank
@JsonProperty(required = true)
private String name;
@NotBlank
@JsonProperty(required = true)
private String code;
@Default
@NotNull
@JsonProperty(value = "private", required = true)
private Boolean privateLayer = Boolean.FALSE;
@Default
@JsonSetter(nulls = Nulls.AS_EMPTY)
@JsonProperty("types")
private Set<UUID> types = new HashSet<>();
@Default
@JsonSetter(nulls = Nulls.AS_EMPTY)
@JsonProperty("assets")
private Set<UUID> assets = new HashSet<>();
}