Skip to content

Broken deserialization on 2.13.0-rc1 for ignored non-scalar properties #3252

Closed
@XakepSDK

Description

@XakepSDK

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions