27package dev.rafex.ether.json;
29import java.util.Objects;
30import java.util.function.Consumer;
32import com.fasterxml.jackson.annotation.JsonInclude;
33import com.fasterxml.jackson.databind.DeserializationFeature;
34import com.fasterxml.jackson.databind.Module;
35import com.fasterxml.jackson.databind.ObjectMapper;
36import com.fasterxml.jackson.databind.PropertyNamingStrategy;
37import com.fasterxml.jackson.databind.SerializationFeature;
39public final class JsonCodecBuilder {
41 private final ObjectMapper mapper;
43 private JsonCodecBuilder(
final ObjectMapper mapper) {
47 public static JsonCodecBuilder
create() {
51 public static JsonCodecBuilder
strict() {
55 public static JsonCodecBuilder
lenient() {
59 public JsonCodecBuilder
configure(
final Consumer<ObjectMapper> customizer) {
60 Objects.requireNonNull(customizer,
"customizer").accept(mapper);
65 mapper.
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, enabled);
70 mapper.
configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, enabled);
75 mapper.
configure(SerializationFeature.INDENT_OUTPUT, enabled);
79 public JsonCodecBuilder
namingStrategy(
final PropertyNamingStrategy strategy) {
80 mapper.setPropertyNamingStrategy(strategy);
85 mapper.setSerializationInclusion(
include);
Implementación de JsonCodec basada en Jackson ObjectMapper.
static ObjectMapper defaultMapper()
Crea un ObjectMapper con la configuración por defecto del módulo: registra JavaTimeModule y deshabili...
JsonCodecBuilder writeDatesAsTimestamps(final boolean enabled)
JsonCodecBuilder namingStrategy(final PropertyNamingStrategy strategy)
JsonCodecBuilder registerModule(final Module module)
static JsonCodecBuilder strict()
JsonCodecBuilder include(final JsonInclude.Include include)
JsonCodecBuilder prettyPrint(final boolean enabled)
static JsonCodecBuilder lenient()
JsonCodecBuilder configure(final Consumer< ObjectMapper > customizer)
JsonCodecBuilder failOnUnknownProperties(final boolean enabled)
static JsonCodecBuilder create()