Provides comprehensive Jackson JSON processing support for Dropwizard applications with pre-configured ObjectMapper instances and essential modules.
—
Dropwizard Jackson provides several custom Jackson modules that extend serialization capabilities for specific types and use cases commonly found in Dropwizard applications.
Jackson module that provides serialization and deserialization support for Caffeine cache specifications.
public class CaffeineModule extends Module {
public String getModuleName() // Returns "CaffeineModule"
public Version version()
public void setupModule(SetupContext context)
}Supported Types:
com.github.benmanes.caffeine.cache.CaffeineSpecSerialization Behavior:
Usage Example:
ObjectMapper mapper = Jackson.newObjectMapper(); // CaffeineModule automatically included
CaffeineSpec spec = CaffeineSpec.parse("maximumSize=1000,expireAfterWrite=30s");
String json = mapper.writeValueAsString(spec);
// Result: "maximumSize=1000,expireAfterWrite=30s"
CaffeineSpec deserialized = mapper.readValue(json, CaffeineSpec.class);Jackson module that provides permissive enum deserialization, handling common formatting variations.
public class FuzzyEnumModule extends Module {
public String getModuleName() // Returns "permissive-enums"
public Version version()
public void setupModule(SetupContext context)
}Deserialization Features:
Enums.fromStringFuzzy() utility for permissive matchingBehavior Conditions:
@JsonCreator annotation is presentREAD_ENUMS_USING_TO_STRING feature is enabledREAD_UNKNOWN_ENUM_VALUES_AS_NULL feature is enabledREAD_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE feature is enabledcom.fasterxml.jackson.annotation packageUsage Example:
public enum Status {
ACTIVE, INACTIVE, PENDING
}
ObjectMapper mapper = Jackson.newObjectMapper(); // FuzzyEnumModule automatically included
// All of these will deserialize to Status.ACTIVE:
Status active1 = mapper.readValue("\"active\"", Status.class);
Status active2 = mapper.readValue("\"ACTIVE\"", Status.class);
Status active3 = mapper.readValue("\" active \"", Status.class);
Status active4 = mapper.readValue("\"act-ive\"", Status.class);Jackson module that provides serialization and deserialization support for Guava cache builder specifications.
public class GuavaExtrasModule extends Module {
public String getModuleName() // Returns "guava-extras"
public Version version()
public void setupModule(SetupContext context)
}Supported Types:
com.google.common.cache.CacheBuilderSpecSerialization Behavior:
Usage Example:
ObjectMapper mapper = Jackson.newObjectMapper(); // GuavaExtrasModule automatically included
CacheBuilderSpec spec = CacheBuilderSpec.parse("maximumSize=500,expireAfterAccess=10m");
String json = mapper.writeValueAsString(spec);
// Result: "maximumSize=500,expireAfterAccess=10m"
CacheBuilderSpec deserialized = mapper.readValue(json, CacheBuilderSpec.class);
// Special handling for disabled caches
CacheBuilderSpec disabled = mapper.readValue("\"disabled\"", CacheBuilderSpec.class);
// Results in CacheBuilderSpec.disableCaching()All modules are automatically registered when using Jackson factory methods:
ObjectMapper mapper = Jackson.newObjectMapper();
// All three modules (CaffeineModule, FuzzyEnumModule, GuavaExtrasModule) are pre-registered
ObjectMapper minimal = Jackson.newMinimalObjectMapper();
// Only GuavaModule is registered (not the custom Dropwizard modules)The custom modules work alongside standard Jackson modules that are also automatically registered:
Install with Tessl CLI
npx tessl i tessl/maven-io-dropwizard--dropwizard-jackson