Example usage for com.fasterxml.jackson.databind.ser BeanSerializerModifier BeanSerializerModifier

List of usage examples for com.fasterxml.jackson.databind.ser BeanSerializerModifier BeanSerializerModifier

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind.ser BeanSerializerModifier BeanSerializerModifier.

Prototype

BeanSerializerModifier

Source Link

Usage

From source file:com.github.shyiko.jackson.module.advice.JsonAdviceModule.java

@Override
public void setupModule(SetupContext context) {
    context.addBeanSerializerModifier(new BeanSerializerModifier() {

        @Override/*from  w  ww . jav a 2  s.co m*/
        public com.fasterxml.jackson.databind.ser.BeanSerializerBuilder updateBuilder(
                SerializationConfig config, BeanDescription beanDesc,
                com.fasterxml.jackson.databind.ser.BeanSerializerBuilder builder) {
            JsonSerializerAdvice advice = beanDesc.getClassAnnotations().get(JsonSerializerAdvice.class);
            return advice != null ? new AdvisedBeanSerializerBuilder(builder, advice.value()) : builder;
        }
    });
    context.addBeanDeserializerModifier(new BeanDeserializerModifier() {

        @Override
        public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc,
                BeanDeserializerBuilder builder) {
            JsonDeserializerAdvice advice = beanDesc.getClassAnnotations().get(JsonDeserializerAdvice.class);
            return advice != null ? new AdvisedBeanDeserializerBuilder(builder, advice.value()) : builder;
        }
    });
}

From source file:com.github.jonpeterson.jackson.module.interceptor.JsonInterceptorModule.java

public JsonInterceptorModule() {
    super("JsonInterceptor");

    setDeserializerModifier(new BeanDeserializerModifier() {
        @Override/* www  .  j av  a  2 s.  co  m*/
        public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config,
                BeanDescription beanDescription, JsonDeserializer<?> deserializer) {
            if (deserializer instanceof StdDeserializer) {
                JsonInterceptors jsonInterceptors = beanDescription.getClassAnnotations()
                        .get(JsonInterceptors.class);
                if (jsonInterceptors != null) {
                    Class<? extends JsonInterceptor>[] interceptors = jsonInterceptors.beforeDeserialization();
                    if (interceptors.length > 0)
                        return createInterceptingDeserializer((StdDeserializer) deserializer, interceptors);
                }
            }

            return deserializer;
        }

        // here just to make generics work without warnings
        private <T> JsonInterceptingDeserializer<T> createInterceptingDeserializer(
                StdDeserializer<T> deserializer, Class<? extends JsonInterceptor>[] interceptors) {
            return new JsonInterceptingDeserializer<T>(deserializer, interceptors);
        }
    });

    setSerializerModifier(new BeanSerializerModifier() {

        @Override
        public JsonSerializer<?> modifySerializer(SerializationConfig config, BeanDescription beanDescription,
                JsonSerializer<?> serializer) {
            if (serializer instanceof StdSerializer) {
                JsonInterceptors jsonInterceptors = beanDescription.getClassAnnotations()
                        .get(JsonInterceptors.class);
                if (jsonInterceptors != null) {
                    Class<? extends JsonInterceptor>[] interceptors = jsonInterceptors.afterSerialization();
                    if (interceptors.length > 0)
                        return createInterceptingSerializer((StdSerializer) serializer, interceptors);
                }
            }

            return serializer;
        }

        // here just to make generics work without warnings
        private <T> JsonInterceptingSerializer<T> createInterceptingSerializer(StdSerializer<T> serializer,
                Class<? extends JsonInterceptor>[] interceptors) {
            return new JsonInterceptingSerializer<T>(serializer, interceptors);
        }
    });
}

From source file:com.logsniffer.app.CoreAppConfig.java

@Bean
public ObjectMapper jsonObjectMapper() {
    final ObjectMapper jsonMapper = new ObjectMapper();
    jsonMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
    jsonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    jsonMapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
    jsonMapper.configure(Feature.ALLOW_SINGLE_QUOTES, true);
    jsonMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);

    final SimpleModule module = new SimpleModule("FieldsMapping", Version.unknownVersion());
    module.setSerializerModifier(new BeanSerializerModifier() {
        @Override/*from w w w.j  av a  2 s.  co m*/
        public JsonSerializer<?> modifyMapSerializer(final SerializationConfig config, final MapType valueType,
                final BeanDescription beanDesc, final JsonSerializer<?> serializer) {
            if (FieldsMap.class.isAssignableFrom(valueType.getRawClass())) {
                return new FieldsMapMixInLikeSerializer();
            } else {
                return super.modifyMapSerializer(config, valueType, beanDesc, serializer);
            }
        }
    });
    jsonMapper.registerModule(module);
    return jsonMapper;
}