Closed
Description
Describe the bug
jackson 2.13.0-rc1 has broken deserialization
2.12.4 works fine
Version information
2.13.0-rc1
To Reproduce
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class Main {
public static void main(String[] args) throws IOException {
List<TestObject> testData = new ObjectMapper().readValue(
"""
[
{"name": "first entry"},
{"name": "second entry", "breaker": [""]},
{"name": "third entry"}
]
""", new TypeReference<>() {});
if (testData.size() != 3) throw new RuntimeException("Deserialization failed");
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class TestObject {
@JsonProperty("name")
private final String name;
@JsonProperty("dumbMap")
private final Map<String, String> dumbMap;
@JsonCreator
public TestObject(@JsonProperty("name") String name,
@JsonProperty("dumbMap") Map<String, String> dumbMap) {
this.name = name;
this.dumbMap = Objects.requireNonNullElse(dumbMap, Collections.emptyMap());
}
}
}
Expected behavior
3 items are deserialized
Additional context
Deserialization works if:
If breaker
array is empty
If TestObject
does not have constructor
If i deserialize into List
instead of List<TestObject>
, seems like it reads all entries into Map
Metadata
Metadata
Assignees
Labels
No labels