Is your feature request related to a problem? Please describe.

We could use HTTP PATCH for partial update, currently there is no easy way to know which keys are bound. More background https://github.com/spring-projects/spring-framework/issues/27159

Describe the solution you'd like

Provide an interface like:

    public interface BoundKeysAware {

        public void setBoundKeys(Set<String> boundKeys);

    }

    public class User implements BoundKeysAware {

        private String username;

        private String password = "******";

        private Set<String> boundKeys;

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public Set<String> getBoundKeys() {
            return boundKeys;
        }

        public void setBoundKeys(Set<String> boundKeys) {
            this.boundKeys = boundKeys;
        }

    }

    @Test
    public void test() throws Exception {
        ObjectMapper om = new ObjectMapper();
        String json = """
                {"username": "test", "password": null}
                """;
        User user = om.readValue(json, User.class);
        assertThat(user.getUsername()).isEqualTo("test");
        assertThat(user.getPassword()).isNull();

        assertThat(user.getBoundKeys()).containsExactly("username", "password");


        json = """
                {"username": "test"}
                """;
        user = om.readValue(json, User.class);
        assertThat(user.getUsername()).isEqualTo("test");
        assertThat(user.getPassword()).isEqualTo("******");

        assertThat(user.getBoundKeys()).containsExactly("username");
    }

Usage example

No response

Additional context

No response

Comment From: pjfanning

I'm not sure that this is a feature that many people need. If you want to provide a PR then it will be looked at. Anyone else who thinks this is useful could also provide a PR. It looks like something that would be hard to implement.

If this was my problem, I would write a solution using existing Jackson APIs. * I would use mapper.readTree to read the JSON into a node tree - see https://www.baeldung.com/jackson-json-node-tree-model * It is possible to check the tree for which nodes are in it (and which ones are not)

Comment From: pjfanning

This appears to be a variant on the 'Missing Node' issue. You can use your favourite Search Engine or GenAI tool to look into discussion and solutions related to Missing Nodes (basically whether a JSON node appears in the input, appears but is explicitly set to a null value or appears and has a non-null value).