📜  jackson 反序列化 fail-on-unknown-properties true - Java (1)

📅  最后修改于: 2023-12-03 15:15:54.059000             🧑  作者: Mango

使用Jackson反序列化时,如何fail-on-unknown-properties为true

在使用Jackson进行对象反序列化时,如果输入的JSON中包含未知属性,通常会导致反序列化失败,Jackson会抛出UnrecognizedPropertyException异常。然而,我们有时可能想要忽略未知属性而不是抛出异常,或者只想在出现未知属性时抛出异常,这时就需要fail-on-unknown-properties属性。

fail-on-unknown-properties属性

fail-on-unknown-properties属性是Jackson ObjectMapper的一个配置属性,它允许我们控制在反序列化时出现未知属性时的行为。当该属性为true时,反序列化器会抛出UnrecognizedPropertyException异常,如果为false,则会忽略未知属性。

在Jackson 2.x版本中,默认情况下,fail-on-unknown-properties为true,而在1.x版本中,默认为false。

如何设置

我们可以使用ObjectMapper的configure方法来设置fail-on-unknown-properties属性。例如,我们可以将其设置为false,如下所示:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

这样,当输入的JSON中包含未知属性时,程序不会抛出异常,而是忽略这些未知属性,将其他属性反序列化为Java对象。

另外,我们也可以将其设置为true,以便在出现未知属性时抛出异常:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);

这时,如果输入的JSON中包含未知属性,反序列化器将抛出UnrecognizedPropertyException异常。

总结

Jackson是Java中广泛使用的JSON序列化和反序列化库。在使用Jackson进行反序列化时,我们可以使用fail-on-unknown-properties属性来控制在输入JSON中出现未知属性时的行为。将其设置为true时,反序列化器会抛出异常,而false则会忽略未知属性。