Skip to content

MapperFeature.REQUIRE_SETTERS_FOR_GETTERS has no effect #736

@migel

Description

@migel

Hi, I've tried the code below to serialize properties that have both a getter and a setter. However the output is: {"readonly":1,"readwrite":2} while I expected it to be: {"readwrite":2}.

public class Main {

    public static class DataB {
        private int readonly;
        private int readwrite;

        public DataB() {
            readonly = 1;
            readwrite = 2;
        }

        public int getReadwrite() {
            return readwrite;
        }
        public void setReadwrite(int readwrite) {
            this.readwrite = readwrite;
        }
        public int getReadonly() {
            return readonly;
        }
    }

    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper(); 
        mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
        mapper.setVisibility(PropertyAccessor.GETTER, Visibility.PUBLIC_ONLY);
        mapper.setVisibility(PropertyAccessor.SETTER, Visibility.PUBLIC_ONLY);
        mapper.enable(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS);
        DataB dataB = new DataB();
        try {
            String json = mapper.writeValueAsString(dataB);
            System.out.println(json);
        } catch (JsonProcessingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    2.17Issues planned at earliest for 2.17has-failing-testIndicates that there exists a test case (under `failing/`) to reproduce the issue

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions