30

Spring MVC 3.1 与 Jackson 2.0 兼容吗?Spring MVC 在类路径上自动检测 Jackson 并委托给 Jackson 以请求 JSON 内容类型的请求仍然有效吗?

4

6 回答 6

24

基思唐纳德(弹簧来源)不久前发布了以下推文。

杰克逊 2 的 Spring MVC 支持;也适用于杰克逊的原生“漂亮打印”功能https://gist.github.com/2423129

我没有尝试过MappingJackson2HttpMessageConverter上述要点中的发现,但如果它不起作用,我会感到惊讶。

于 2012-05-02T20:28:10.937 回答
22

在 Spring 3.2 中添加了对 Jackson 2 的支持,并且还向后移植到 Spring 3.1.2 ( SPR-9507 )

于 2012-07-14T11:39:48.587 回答
17

从 Spring 3.1.2 开始,您只需将jackson-databind jar 添加到您的类路径中。

在 Maven 中,您可以像这样配置它:

<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>

其余的魔法将由 spring 自动完成。

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

于 2012-11-17T23:10:05.720 回答
9

对于 Spring 3.1.2 和 Jackson 2 -

  • 如上所述,自动支持 JustWorks™</p>

  • 但配置没有,因为大多数网络都充斥着 Spring3/Jackson2 之前的配置机制

因此,为了后代,我将列出一个 hack(?或者这是官方方式)来配置 Jackson 转换器。在这种特殊情况下,我将转换器配置为以 ISO-8601 格式返回日期:

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;
    }
}
于 2012-07-25T10:45:16.663 回答
2

需要明确的是,Spring 3.1 没有对 Jackson 2 的原生支持。它在 Spring 3.2 中

于 2012-06-29T16:26:37.087 回答
0

我没有测试与 Jackson 2.0 兼容的 Spring MVC 3.1。但我遇到 3.0.5 兼容问题。最后我发现 Spring MVC 3.0.5 只兼容 Jackson 1.0.0,肯定 Jackson 1.5.3 不兼容!!!

于 2017-03-29T16:23:08.737 回答