diff --git a/jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/defaultvalues/SetterDefaultValueAsEmptyString.java b/jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/defaultvalues/SetterDefaultValueAsEmptyString.java new file mode 100644 index 000000000000..9c8083ba7592 --- /dev/null +++ b/jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/defaultvalues/SetterDefaultValueAsEmptyString.java @@ -0,0 +1,27 @@ +package com.baeldung.jackson.defaultvalues; + +public class SetterDefaultValueAsEmptyString { + + private String required; + private String optional = "valueIfMissingEntirely"; + + public void setOptional(String optional){ + if(optional == null){ + this.optional = ""; + } + } + + public String getRequired() { + return required; + } + + public String getOptional() { + return optional; + } + + @Override + public String toString() { + return "NonAnnotatedDefaultValue{" + "required='" + required + '\'' + ", optional='" + optional + '\'' + '}'; + } + +} diff --git a/jackson-modules/jackson-core/src/test/java/com/baeldung/jackson/defaultvalues/DefaultValuesUnitTest.java b/jackson-modules/jackson-core/src/test/java/com/baeldung/jackson/defaultvalues/DefaultValuesUnitTest.java index a7d41be76461..5d1129dc6fa3 100644 --- a/jackson-modules/jackson-core/src/test/java/com/baeldung/jackson/defaultvalues/DefaultValuesUnitTest.java +++ b/jackson-modules/jackson-core/src/test/java/com/baeldung/jackson/defaultvalues/DefaultValuesUnitTest.java @@ -25,6 +25,15 @@ public void givenAClassWithASetter_whenReadingJsonWithNullOptionalValue_thenExpe assert(createdObject.getOptional()).equals("valueIfNull"); } + @Test + public void givenAClassWithASetter_whenReadingJsonWithNullOptionalValue_thenEmptyStringInResult() throws JsonProcessingException { + String nullOptionalField = "{\"required\": \"value\", \"optional\": null}"; + ObjectMapper objectMapper = new ObjectMapper(); + SetterDefaultValueAsEmptyString createdObject = objectMapper.readValue(nullOptionalField, SetterDefaultValueAsEmptyString.class); + assert(createdObject.getRequired()).equals("value"); + assert(createdObject.getOptional()).equals(""); + } + @Test public void givenAClassWithAJsonSetterNullsSkip_whenReadingJsonWithNullOptionalValue_thenExpectDefaultValueInResult() throws JsonProcessingException { String nullOptionalField = "{\"required\": \"value\", \"optional\": null}";