de.otto.jlineup.web.configuration.JacksonConfiguration Maven / Gradle / Ivy
package de.otto.jlineup.web.configuration;
import com.fasterxml.jackson.core.json.JsonReadFeature;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import static com.fasterxml.jackson.core.JsonParser.Feature.*;
import static com.fasterxml.jackson.databind.MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS;
import static com.fasterxml.jackson.databind.SerializationFeature.INDENT_OUTPUT;
@Configuration
public class JacksonConfiguration {
@Bean
public ObjectMapper objectMapper() {
JsonMapper objectMapper = JsonMapper.builder()
.configure(JsonReadFeature.ALLOW_TRAILING_COMMA, true)
.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS, true)
.configure(ACCEPT_CASE_INSENSITIVE_ENUMS, true)
.configure(ALLOW_COMMENTS, true)
.configure(INDENT_OUTPUT, true)
.build();
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE);
objectMapper.registerModule(new JavaTimeModule());
objectMapper.registerModule(new Jdk8Module());
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return objectMapper;
}
}