web-dev-qa-db-ja.com

ジャクソン2.0とSpring 3.1

Spring MVC 3.1はJackson 2.0と互換性がありますか? Spring MVCのクラスパスでのジャクソンの自動検出、およびJSONコンテンツタイプのリクエストに対するジャクソンへの委任は引き続き機能しますか?

28

Jackson 3.2のサポートがSpring 3.2で追加され、Spring 3.1.2にバックポートされました( SPR-9507

21

(春の情報源の)キース・ドナルドはしばらく前に以下をツイートしました。

Jackson 2のSpring MVCサポート。また、ジャクソンのネイティブ「プリティプリント」機能 https://Gist.github.com/2423129

上記のGistにあるMappingJackson2HttpMessageConverterを試したことはありませんが、うまくいかない場合は驚かされます。

23
Fredrik

Spring 3.1.2以降では、クラスパスにjackson-databindjarを追加するだけです。

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>

残りの魔法は、春までに自動的に行われます。

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

17
Michael König

Spring 3.1.2およびJackson 2の場合-

  • 上記で概説したように、自動サポートJustWorks™

  • しかし、ほとんどのウェブにはSpring3/Jackson2以前の設定メカニズムが散らばっているため、設定はそうではありません。

したがって、後世のために、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;
    }
}
8
Manav

明確にするために、Spring 3.1にはJackson 2のネイティブサポートがありません。Spring3.2にあります。

2
Marc

Jackson 2.0と互換性のあるSpring MVC 3.1はテストしませんでした。しかし、3.0.5互換性の問題が発生します。最後に、Spring MVC 3.0.5はJackson 1.0.0とのみ互換性があり、Jackson 1.5.3は互換性がないことは間違いありません!!!

0
malajisi