The reason Jackson serializes the transient
member is because the getters are used to determine what to serialize, not the member itself - and since y
has a public getter, that gets serialized.
If you want to change that default and have Jackson use fields - simply do:
om.setVisibilityChecker(
om.getSerializationConfig()
.getDefaultVisibilityChecker()
.withFieldVisibility(JsonAutoDetect.Visibility.ANY)
.withGetterVisibility(JsonAutoDetect.Visibility.NONE)
);
Another way to ignore a property on serialization is to do it directly on the class:
@JsonIgnoreProperties(value = { "y" })
public class TestElement {
...
And another way is directly on the field:
public class TestElement {
@JsonIgnore
private String y;
...
Hope this helps.