Sch*_*kea 7 java serialization spring-mvc jodatime spring-boot
我有一个带有RESTful端点的Spring Boot应用程序,我想为joda-time添加自定义序列化程序,但我无法让应用程序默认Jackson serailzier识别我的自定义端口.
我使用@RepositoryRestResource创建了RESTFul端点
@RepositoryRestResource(collectionResourceRel = "x", path = "x")
public interface XRepository extends PagingAndSortingRepository<X, Long>
{
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个GET调用来返回所有对象X:
这是我的序列化器:
@Component
public class JsonDateSerializer extends JsonSerializer<DateTime>
{
private static DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy");
@Override
public void serialize(DateTime value, JsonGenerator gen,
SerializerProvider arg2)
throws IOException, JsonProcessingException {
gen.writeString(formatter.print(value));
}
}
Run Code Online (Sandbox Code Playgroud)
我将它添加到属性Getter,如下所示:
@JsonSerialize(using=JsonDateSerializer.class)
public DateTime getDateCreated()
{
return dateCreated;
}
Run Code Online (Sandbox Code Playgroud)
这个序列化程序在普通应用程序中运行良好,但是当我尝试在Spring Boot应用程序中使用它时,这些序列化程序会被忽略.
如何让Spring Boot识别这些序列化程序?
好吧,经过多次煎熬,我找到了答案.我使用错误的库来进行joda-datetime的序列化和反序列化.
我在用
org.codehaus.jackson
什么时候我应该使用
com.fasterxml.jackson
我想这是一个容易犯的错误,因为两个库具有几乎相同的属性和方法,因为com.fasterxml.jackson构建在org.codehaus.jackson之上.
愚蠢的错误现在回顾,但学到的宝贵经验总是检查你使用正确的库!!!!
| 归档时间: |
|
| 查看次数: |
5190 次 |
| 最近记录: |