【发布时间】:2018-12-14 03:46:33
【问题描述】:
我正在尝试在 objectMapper 上使用 Jackson 标志
objectMapper.enable(DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES);
如果没有在 json 中设置构造函数参数,这应该会导致对象反序列化失败。即,如果字段缺失而不是设置为 null。
但我注意到它只有在我要反序列化的对象具有这样的构造函数时才有效
public MyObject(@JsonProperty("id") UUID id, @JsonProperty("url") URL url) {
this.id = id;
this.url = url;
}
这有点问题,因为我希望使用 lombok 的 @AllArgsConstructor 来生成构造函数。但是,如果构造函数缺少 @JsonProperty(..),则 FAIL_ON_MISSING_CREATOR_PROPERTIES 检查不起作用。而是将参数作为 null 传入。
我在这里Can't make Jackson and Lombok work together 遇到了一些解决方案。但到目前为止,他们不为我工作。
有什么建议吗?
--- 更新---
我课上的注释是
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
public class MyClass { ... }
【问题讨论】:
标签: jackson deserialization lombok