-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Closed
Milestone
Description
When using readerForUpdating and updating an existing objectNode to a null Node this exception is triggered
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.fasterxml.jackson.databind.node.ObjectNode` out of VALUE_NULL token
at [Source: UNKNOWN; line: -1, column: -1]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1468)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1242)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1148)
at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer$ObjectDeserializer.deserialize(JsonNodeDeserializer.java:107)
at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer$ObjectDeserializer.deserialize(JsonNodeDeserializer.java:82)
at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.updateObject(JsonNodeDeserializer.java:361)
at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.updateObject(JsonNodeDeserializer.java:373)
at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer$ObjectDeserializer.deserialize(JsonNodeDeserializer.java:120)
at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer$ObjectDeserializer.deserialize(JsonNodeDeserializer.java:82)
at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2081)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1696)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1711)
Version information
Jackson : 2.11.4
Java : openjdk-15.0.2
To Reproduce
@Test
void test() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode node = objectMapper.createObjectNode();
node.set("test", objectMapper.createObjectNode());
ObjectNode update = objectMapper.createObjectNode();
update.set("test", NullNode.getInstance());
ObjectReader objectReader = objectMapper.readerForUpdating(node);
ObjectNode afterUpdateNode = objectReader.readValue(update, ObjectNode.class);
}
Expected behavior
In the code above node
starts as
{
"test": {}
}
and updated with the object update
containing
{
"test": null
}
after the update is applied afterUpdateNode
should contain the following
{
"test": null
}
But instead the above exception is raised. This looks to be same as #2325 but that was closed by the originator
Metadata
Metadata
Assignees
Labels
No labels