/** * Specify one or more modules by class (or class name in XML) * to be registered with the {@link ObjectMapper}. * <p>Modules specified here will be registered after * Spring's autodetection of JSR-310 and Joda-Time, or Jackson's * finding of modules (see {@link #setFindModulesViaServiceLoader}), * allowing to eventually override their configuration. * <p>Specify either this or {@link #setModules}, not both. * @since 4.0.1 * @see com.fasterxml.jackson.databind.Module */ @SuppressWarnings("unchecked") public void setModulesToInstall(Class<? extends Module>... modules) { this.builder.modulesToInstall(modules); }
/** * Specify one or more modules by class (or class name in XML) * to be registered with the {@link ObjectMapper}. * <p>Modules specified here will be registered after * Spring's autodetection of JSR-310 and Joda-Time, or Jackson's * finding of modules (see {@link #setFindModulesViaServiceLoader}), * allowing to eventually override their configuration. * <p>Specify either this or {@link #setModules}, not both. * @since 4.0.1 * @see com.fasterxml.jackson.databind.Module */ @SuppressWarnings("unchecked") public void setModulesToInstall(Class<? extends Module>... modules) { this.builder.modulesToInstall(modules); }
@Test // SPR-12634 @SuppressWarnings("unchecked") public void customizeWellKnownModulesWithModuleClass() throws JsonProcessingException, UnsupportedEncodingException { ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json() .modulesToInstall(CustomIntegerModule.class) .build(); DateTime dateTime = new DateTime(1322903730000L, DateTimeZone.UTC); assertEquals("1322903730000", new String(objectMapper.writeValueAsBytes(dateTime), "UTF-8")); assertThat(new String(objectMapper.writeValueAsBytes(new Integer(4)), "UTF-8"), containsString("customid")); }
@Test // SPR-12634 public void customizeWellKnownModulesWithModule() throws JsonProcessingException, UnsupportedEncodingException { ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json() .modulesToInstall(new CustomIntegerModule()) .build(); DateTime dateTime = new DateTime(1322903730000L, DateTimeZone.UTC); assertEquals("1322903730000", new String(objectMapper.writeValueAsBytes(dateTime), "UTF-8")); assertThat(new String(objectMapper.writeValueAsBytes(new Integer(4)), "UTF-8"), containsString("customid")); }
@Test @SuppressWarnings("unchecked") public void modulesToInstallByClass() { ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json() .modulesToInstall(CustomIntegerModule.class) .build(); Serializers serializers = getSerializerFactoryConfig(objectMapper).serializers().iterator().next(); assertSame(CustomIntegerSerializer.class, serializers.findSerializer(null, SimpleType.construct(Integer.class), null).getClass()); }
@Test public void modulesToInstallByInstance() { ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json() .modulesToInstall(new CustomIntegerModule()) .build(); Serializers serializers = getSerializerFactoryConfig(objectMapper).serializers().iterator().next(); assertSame(CustomIntegerSerializer.class, serializers.findSerializer(null, SimpleType.construct(Integer.class), null).getClass()); }
/** * Specify one or more modules by class (or class name in XML) * to be registered with the {@link ObjectMapper}. * <p>Modules specified here will be registered after * Spring's autodetection of JSR-310 and Joda-Time, or Jackson's * finding of modules (see {@link #setFindModulesViaServiceLoader}), * allowing to eventually override their configuration. * <p>Specify either this or {@link #setModules}, not both. * @since 4.0.1 * @see com.fasterxml.jackson.databind.Module */ @SuppressWarnings("unchecked") public void setModulesToInstall(Class<? extends Module>... modules) { this.builder.modulesToInstall(modules); }
/** * Specify one or more modules by class (or class name in XML) * to be registered with the {@link ObjectMapper}. * <p>Modules specified here will be registered after * Spring's autodetection of JSR-310 and Joda-Time, or Jackson's * finding of modules (see {@link #setFindModulesViaServiceLoader}), * allowing to eventually override their configuration. * <p>Specify either this or {@link #setModules}, not both. * @since 4.0.1 * @see com.fasterxml.jackson.databind.Module */ @SuppressWarnings("unchecked") public void setModulesToInstall(Class<? extends Module>... modules) { this.builder.modulesToInstall(modules); }
/** * Customize the jackson object map builder. * @return Jackson2ObjectMapperBuilderCustomizer instance. */ @Bean public Jackson2ObjectMapperBuilderCustomizer registerJacksonProtobufModule() { return jacksonObjectMapperBuilder -> { // Register custom protocol buffer serializer. jacksonObjectMapperBuilder.modulesToInstall(new ProtobufModule()); }; }
/** * add module Java 8 Time and AfterBurner in class path */ @SuppressWarnings("unchecked") @Bean public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() { return new Jackson2ObjectMapperBuilder().modulesToInstall(AfterburnerModule.class); }
/** * Ensure that ProtobufModule is registered so protobufs can easily be serialized. * @param converters list of converters registered. */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.clear(); final ObjectMapper mapper = Jackson2ObjectMapperBuilder .json() .modulesToInstall(new ProtobufModule()) .serializerByType(GenericData.Record.class, new SimpleAvroDataSerializer(appProperties.isAvroIncludeSchema())) .build(); converters.add(new MappingJackson2HttpMessageConverter(mapper)); } }
@Bean public Jackson2ObjectMapperBuilder objectMapperBuilder(JsonComponentModule jsonComponentModule) { Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); builder // .serializerByType(ZonedDateTime.class, new JsonSerializer<ZonedDateTime>() { // @Override // public void serialize(ZonedDateTime zonedDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { // jsonGenerator.writeString(DateTimeFormatter.ISO_ZONED_DATE_TIME.format(zonedDateTime)); // } // }) .serializationInclusion(JsonInclude.Include.NON_EMPTY) .featuresToDisable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES ) .featuresToEnable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY) .indentOutput(true) .modulesToInstall(jsonComponentModule); return builder; }