Jackson 2.0 with Spring 3.1

前端 未结 6 1272
面向向阳花
面向向阳花 2020-11-28 09:22

Is Spring MVC 3.1 compatible with Jackson 2.0? Will Spring MVC\'s automatic detection of Jackson on the classpath, and delegation to Jackson for requests with a JSON content

相关标签:
6条回答
  • 2020-11-28 09:43

    Support for Jackson 2 has been added in Spring 3.2, and has also backported to Spring 3.1.2 (SPR-9507)

    0 讨论(0)
  • 2020-11-28 09:45

    Keith Donald (of spring source) tweeted the following a while back.

    Spring MVC support for Jackson 2; also works with Jackson's native "pretty print" feature https://gist.github.com/2423129

    I haven't tried the MappingJackson2HttpMessageConverter found in the gist above but it would surprise me if it did not work.

    0 讨论(0)
  • 2020-11-28 09:53

    Since Spring 3.1.2 you simply have to add jackson-databind jar to your classpath.

    In Maven you can configure it like this:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    

    The rest of the magic will be done by spring automatically.

    See: http://norrisshelton.wordpress.com/2012/07/15/spring-3-mvc-with-json-via-jackson-2-0/

    0 讨论(0)
  • 2020-11-28 09:58

    I didn't test Spring MVC 3.1 compatible with Jackson 2.0. But I encounter 3.0.5 compatible issue. Finally I find Spring MVC 3.0.5 is only compatible with Jackson 1.0.0, definitely Jackson 1.5.3 isn't compatible!!!

    0 讨论(0)
  • 2020-11-28 10:06

    To be clear, Spring 3.1 doesn't have native support for Jackson 2. It's in Spring 3.2

    0 讨论(0)
  • 2020-11-28 10:07

    For Spring 3.1.2 and Jackson 2 -

    • As outlined above, the automatic support JustWorks™

    • but configuration doesn't, as most of the web is littered with pre Spring3/Jackson2 configuration mechanisms

    So for posterity, I'll list out a hack(? or is this the official way) to configure the Jackson converter. In this particular case, I am configuring the converter to return dates in the ISO-8601 format:

    package foo.bar.JacksonConfig;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature;
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanPostProcessor;
    import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
    import org.springframework.stereotype.Component;
    
    @Component
    public class JacksonConfig implements BeanPostProcessor {
    
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }
    
        public Object postProcessAfterInitialization(Object bean, String beanName)
                throws BeansException {
            if (bean instanceof MappingJackson2HttpMessageConverter) {
                MappingJackson2HttpMessageConverter jsonConverter =
                        (MappingJackson2HttpMessageConverter) bean;
                ObjectMapper objectMapper = jsonConverter.getObjectMapper();
                objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
                jsonConverter.setObjectMapper(objectMapper);
            }
            return bean;
        }
    }
    
    0 讨论(0)
提交回复
热议问题