In Jackson 3, ObjectMapper and JsonFactory are fully immutable. You can no longer use setter methods for configuration. Instead, use the builder() pattern.
General Configuration
final JsonMapper mapper = JsonMapper.builder()
.addModule(new JodaModule())
.enable(JsonWriteFeature.ESCAPE_NON_ASCII)
.build();
Reconfiguring an existing instance
To create a new instance based on an existing one, use .rebuild():
JsonMapper mapper2 = mapper.rebuild()
.enable(SerializationFeature.INDENT_OUTPUT)
.build();
Date Format and Time Zone
ObjectMapper mapper = JsonMapper.builder()
.defaultDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"))
.defaultTimeZone(TimeZone.getDefault())
.build();
Serialization Inclusion
ObjectMapper mapper = JsonMapper.builder()
.changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_NULL))
.changeDefaultPropertyInclusion(incl -> incl.withContentInclusion(JsonInclude.Include.NON_NULL))
.build();
Visibility
ObjectMapper mapper = JsonMapper.builder()
.changeDefaultVisibility(vc ->
vc.withFieldVisibility(JsonAutoDetect.Visibility.NONE))
.build();
Default Serialization/Deserialization Views (Jackson 3.1+)
ObjectMapper mapper = JsonMapper.builder()
.defaultSerializationView(Views.Public.class)
.defaultDeserializationView(Views.Public.class)
.build();
final JsonMapper mapper = JsonMapper.builder() // format-specific builders
.addModule(new JodaModule()) // to use Joda date/time types
.enable(JsonWriteFeature.ESCAPE_NON_ASCII) // configure streaming JSON-escaping
.build();