Java Spring引导忽略@JsonDeserialize和@JsonSerialize

Java Spring引导忽略@JsonDeserialize和@JsonSerialize,java,spring-mvc,serialization,spring-boot,jodatime,Java,Spring Mvc,Serialization,Spring Boot,Jodatime,我有一个带有RESTful端点的Spring Boot应用程序,我想为其添加自定义序列化程序,但我无法让应用程序默认Jackson serailzier识别我的自定义序列化程序 我使用@RepositoryRestResource创建了RESTFul端点 @RepositoryRestResource(collectionResourceRel = "x", path = "x") public interface XRepository extends PagingAndSortingRep

我有一个带有RESTful端点的Spring Boot应用程序,我想为其添加自定义序列化程序,但我无法让应用程序默认Jackson serailzier识别我的自定义序列化程序

我使用@RepositoryRestResource创建了RESTFul端点

@RepositoryRestResource(collectionResourceRel = "x", path = "x") 
public interface XRepository extends PagingAndSortingRepository<X, Long>
{
}
这个序列化程序在普通应用程序中工作得很好,但是当我尝试在Spring Boot应用程序中使用它时,这些序列化程序会被忽略


我怎样才能让Spring Boot识别这些序列化程序呢?

好吧,在经历了很多折磨之后,我找到了答案。我使用了错误的库来序列化和反序列化joda datetime

我在用

org.codehaus.jackson

当我应该使用

com.fasterxml.jackson

我想这很容易出错,因为这两个库的属性和方法几乎相同,因为com.fasterxml.jackson构建在org.codehaus.jackson之上


现在回头看,这是一个愚蠢的错误,但这是一个宝贵的教训,让你学会始终使用正确的库检查自己

对于SpringMVC4.2.1.RELEASE,您需要使用新的Jackson2依赖项,如下所示,反序列化程序才能工作

不要用这个

<dependency>  
            <groupId>org.codehaus.jackson</groupId>  
            <artifactId>jackson-mapper-asl</artifactId>  
            <version>1.9.12</version>  
        </dependency>  

org.codehaus.jackson
杰克逊地图绘制者
1.9.12  
用这个代替

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.2.2</version>
        </dependency>  

com.fasterxml.jackson.core
杰克逊注释
2.2.2
com.fasterxml.jackson.core
杰克逊核心
2.2.2
com.fasterxml.jackson.core
杰克逊数据绑定
2.2.2

也可以使用com.fasterxml.jackson.databind.jsondeseligator和com.fasterxml.jackson.databind.annotation.jsondeseligate进行反序列化,而不是org.codehaus.jackson中的类

告诉我们在哪里尝试序列化。您试图在
@jsondeseligator
注释中使用什么jackson版本我正在使用以下JSON{“invoiceId”:“1”,“feed”:[{“dateCreated”:“1/1/1”}]}进行POST调用,然后Spring Boot会自动尝试序列化它。@jbarrueta Jackson版本是2.5.3您是否尝试反序列化?我做了同样的事情!真不敢相信使用错误的类/框架会多么容易。
<dependency>  
            <groupId>org.codehaus.jackson</groupId>  
            <artifactId>jackson-mapper-asl</artifactId>  
            <version>1.9.12</version>  
        </dependency>  
<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.2.2</version>
        </dependency>