当前位置: 首页 > 知识库问答 >
问题:

Jackson FAIL _ ON _ MISSING _ CREATOR _ PROPERTIES

越正阳
2023-03-14

我试图在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传入。

我在这里遇到了一些解决方案不能让杰克逊和龙目一起工作。但到目前为止,他们没有为我工作。

有什么建议吗?

-更新-

我的课堂上的注释是

@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
public class MyClass { ... }

共有1个答案

闻人思聪
2023-03-14

以下注释组合适用于龙目岛 1.18.0 和 Jackson 2.9(截至 2018 年 7 月的最新版本):

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class Foo {
    private UUID id;
    private String url;
}
String json = "{\n" +
              "  \"id\": \"32783be3-5355-41d2-807b-619e3481d220\",\n" +
              "  \"url\": \"http://example.com\"\n" +
              "}";

ObjectMapper mapper = new ObjectMapper();
Foo foo = mapper.readValue(json, Foo.class);
 类似资料:

相关问答

相关文章

相关阅读