当前位置: 首页 > 知识库问答 >
问题:

Spring Data Rest和java.time序列化

丁鹏鹍
2023-03-14

我有一个没有Spring Boot的项目,但它使用了一些Spring模块,如“spring data”和“spring data rest”。

我对java.time.*的序列化有一些问题领域。我找到了一些类似这样的教程,但即使我添加了以下依赖项

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>${jackson.version}</version>
</dependency>

以及我的RepositoryRestConfigurerAdapter中的以下代码

@Component public class CvlRepositoryRestConfigurerAdapter extends RepositoryRestConfigurerAdapter {

@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
    config.setDefaultPageSize(75);
    config.setReturnBodyForPutAndPost(Boolean.TRUE);
}

@Override
public void configureJacksonObjectMapper(ObjectMapper objectMapper) {
    super.configureJacksonObjectMapper(objectMapper);
    objectMapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false);
}

}

我对java.time字段的实际回答如下

"rateDate" : { "年": 2017,"月":"FEBRUary","day OfMonth": 14,"day Of周":"TUES天","时代":"CE","day Of年": 45,"leap年": false,"monthValue": 2,"年表" : { "id":"ISO","calendarType":"iso8601"}

我做错了什么?我忘了什么?

共有1个答案

尚安平
2023-03-14

这是我的适配器。现在起作用了

@Component
public class CvlRepositoryRestConfigurerAdapter extends RepositoryRestConfigurerAdapter {

@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
    config.setDefaultPageSize(75);
    config.setReturnBodyForPutAndPost(Boolean.TRUE);
}

@Override
public void configureJacksonObjectMapper(ObjectMapper objectMapper) {
    super.configureJacksonObjectMapper(objectMapper);
    objectMapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false);
    SimpleModule sm = new SimpleModule("jsr310module");
    sm.addSerializer(LocalDate.class,new LocalDateSerializer(DateTimeFormatter.ISO_DATE));
    sm.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ISO_DATE));
    sm.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ISO_DATE_TIME));
    sm.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ISO_DATE_TIME));
    objectMapper.registerModule(sm);
}

}

我只需要检查时区(分区日期时间字段)和编码(似乎是 UTF-8 是默认值),一切都会好起来的。希望对别人有用

 类似资料:
  • 我使用的是 Jackson 2.8,需要与不允许在 ISO 8601 时间戳内毫秒的 API 进行通信。 预期格式为:“ 我正在使用杰克逊的JavaTimeModule,设置为。 但这会打印毫秒。 所以我尝试使用,这没有改变任何东西。 我目前的解决方法是这样的: 我正在重写<code>Instant的默认序列化程序。类</code>。 有没有什么好的方法使用一些配置参数来解决这个问题?

  • 根据这里描述的内容,我应该使用JSR-310表示而不是数字表示来序列化对象。但是,我得到了数字表示。可能有什么问题? 我是这样配置我正在使用的映射器的: 这是我得到的反序列化示例 对于以下事例类:

  • 问题内容: 我正在使用GSON将一些对象图序列化为JSON。这些对象图使用新的Java 8 的实体(,,等)。 我发现了约达时间序列化器库在这里 -是那里的JDK等效图书馆类? (此人在将GSON与- 结合使用方面的努力并没有运气,他们的问题仍未得到解答)。 问题答案: 这里有一个Java 8库: https://github.com/gkopff/gson-javatime- serialise

  • 问题内容: 我注意到存储在Redis中的某些序列化对象在反序列化方面遇到问题。 当我对Redis中存储的对象类进行更改时,通常会发生这种情况。 我想了解问题,以便为解决方案设计一个清晰的方案。 我的问题是,什么导致反序列化问题?移除公共/私人财产会引起问题吗?也许添加新属性?向类添加新功能会产生问题吗?那么更多的构造函数呢? 在我的序列化对象中,我有一个属性Map,如果我更改(更新了一些属性,添加

  • 问题内容: Golang中将结构序列化和反序列化为字符串的最佳方法(完整性和性能)是什么,反之亦然? 例如,如果我有这个结构: 我想将其存储在Redis上并取回。我试过保存,整型和字符串,这很好,但是如何存储结构对象? 问题答案: 使用gob和base64可以解决问题,例如: 当您需要序列化自定义结构或类型(例如struct)时,只需添加以下行:

  • 主要内容:1 Java序列化和反序列化,2 Java序列化的优点,3 java.io.Serializable接口,4 Java ObjectOutputStream,5 Java ObjectInputStream,6 Java序列化的例子,7 Java反序列化的例子1 Java序列化和反序列化 Java中的序列化是一种将对象状态写入字节流的机制。它主要用于Hibernate,RMI,JPA,EJB和JMS技术。 序列化的反向操作称为反序列化,其中字节流被转换为对象。序列化和反序列化过程与平台