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

用于json序列化的Spring数据JPA-ZonedDateTime格式

蓟俊杰
2023-03-14

我在json序列化ZonedDateTime时遇到了问题。当转换到json时,它会产生一个巨大的对象,我不希望所有的数据每次都被传输。所以我试着把它格式化为ISO,但它不起作用。我怎样才能使它格式化?

下面是我的实体类:

@MappedSuperclass
public abstract class AuditBase {

    @Id
    @GeneratedValue
    private Long id;

    @CreatedDate
    private ZonedDateTime createdDate;

    @LastModifiedDate
    private ZonedDateTime lastModifiedDate;

    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    public ZonedDateTime getLastModifiedDate() {
        return lastModifiedDate;
    }

    public void setLastModifiedDate(ZonedDateTime lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    public ZonedDateTime getCreatedDate() {
        return createdDate;
    }

    public void setCreatedDate(ZonedDateTime createdDate) {
        this.createdDate = createdDate;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @PrePersist
    public void prePersist() {
        this.createdDate = ZonedDateTime.now();
        this.lastModifiedDate = ZonedDateTime.now();
    }

    @PreUpdate
    public void preUpdate() {
        this.lastModifiedDate = ZonedDateTime.now();
    }
}

共有1个答案

汪胤
2023-03-14

我想您将Jackson用于json序列化,Jackson现在有一个用于Java8新日期时间API的模块https://github.com/fasterxml/jackson-datatype-jsr310。

将此依赖项添加到pom.xml中

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.6.0</version>
</dependency>

这就是它的用法:

 public static void main(String[] args) throws JsonProcessingException {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.registerModule(new JavaTimeModule());
    System.out.println(objectMapper.writeValueAsString(new Entity()));
}

static class Entity {
    ZonedDateTime time = ZonedDateTime.now();

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    public ZonedDateTime getTime() {
        return time;
    }
}
{"time":"2015-07-25T23:09:01.795+0700"}
objectMapper.registerModule(new JSR310Module());
 类似资料:
  • 问题内容: 我对的json序列化有问题。当转换为json时,它将产生一个巨大的对象,我不希望每次都传输所有这些数据。因此,我尝试将其格式化为ISO,但无法正常工作。我该如何格式化? 这是我的实体类: 问题答案: 将此依赖项添加到你的pom.xml中 这是它的用法: 输出为: 注意:如果你的Jackson版本是2.4.x,请使用

  • 本文向大家介绍PHP的serialize序列化数据以及JSON格式化数据分析,包括了PHP的serialize序列化数据以及JSON格式化数据分析的使用技巧和注意事项,需要的朋友参考一下 PHP的serialize是将变量序列化,返回一个具有变量类型和结构的字符串表达式,而JSON则是一种更轻、更友好的用于接口(AJAX、REST等)数据交换的格式。 其实两者都是以一种字符串的方式来体现一种数据结

  • ObjectMapper不会将对象格式化为自定义对象。 波乔不在我的控制之下,所以我不能改变它。我需要序列化WS的POJO对象。POJO有(我不知道为什么,因为它的日期来自数据库)。 我使用的是Spring boot 2.1.8。释放,所以。。。我将其放入我的依赖项中: 我还在应用程序中添加了这个。特性: 在配置文件中,我在配置文件中添加了这个bean,因为尽快配置ObjectMapper以接受更

  • 我正在努力学习颤振,但我在JSON序列化上被卡住了。我在YouTube和Flitter文档中学习了一些教程,但我在序列化方面遇到了一些困难。你能帮我一点忙吗,这是为了教育目的,所以我更感兴趣的是背后的理论,而不是解决方案本身,然而,即使只有解决方案,我认为我可以尝试理解这个过程。我应该提到,我知道这一点,但在我的例子中,数据中有嵌套对象,这让我感到困惑。 作为响应数据的样本,它基本上是一个商店,每

  • 我有一个名为“test”的表,其中包含Postgres 9.3中json类型的“sample_column”列。我试图使用Spring/JPA将以下内容写入该列:{“name”:“Updated name”} 我在其他帖子上读到,我需要添加一个自定义转换器来将字符串映射到json类型。这是我现在拥有的代码: TestDAO。爪哇: 用于映射json内容的CustomClass: 最后是Conver

  • 出现的错误日志: JSON分析错误:无法构造的实例(尽管至少存在一个创建者):没有可从Number值(3)反序列化的int/Int-argument构造函数/工厂方法 车辆类型类别 车辆控制器