30

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

4

6 に答える 6

24

Keith Donald (Spring Source の) は、しばらく前に次のようにツイートしました。

Jackson 2 の Spring MVC サポート。Jackson のネイティブの「プリティ プリント」機能でも動作します https://gist.github.com/2423129

上記の要点にあるものは試していませんがMappingJackson2HttpMessageConverter、うまくいかなかったら驚くでしょう。

于 2012-05-02T20:28:10.937 に答える
22

Jackson2のサポートはSpring3.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>

残りの魔法は春によって自動的に行われます。

参照: 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>

  • しかし、ほとんどの Web には 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;
    }
}
于 2012-07-25T10:45:16.663 に答える
2

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

于 2012-06-29T16:26:37.087 に答える