簡體   English   中英

將java.util.Date轉換為json格式

[英]Convert java.util.Date to json format

我必須將POJO轉換為JSON字符串才能發送到客戶端代碼。

但是,當我這樣做時,POJO java.util.Date字段(值“ 2107-06-05 00:00:00.0 ”)被翻譯為“ 1496592000000 ”,我認為這是一個紀元以來。 我希望它在Json中更具可讀性,可能是“ DD / MM / YYYY”格式。

我在Spring Boot應用程序中使用RestEasy控制器,該控制器處理Java對象到JSON的轉換。

任何線索出了什么問題?

RestEasy通過Jackson支持JSON,因此您可以通過多種方式處理Date序列化。

1. @JsonFormat批注

如果要格式化特定字段,只需將@JsonFormat批注添加到POJO。

public class TestPojo {

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    public Date testDate;
}

2.傑克遜屬性

如果要全局設置Date序列化格式,則必須調整Jackson配置屬性。 例如, application.properties文件格式。

第一個禁用WRITE_DATES_AS_TIMESTAMPS 序列化功能

spring.jackson.serialization.write-dates-as-timestamps=false

第二個定義日期格式:

spring.jackson.date-format=dd-MM-yyyy

或者,對於application.yml文件格式:

spring:
  jackson:
    date-format: "dd-MM-yyyy"
    serialization:
      write_dates_as_timestamps: false

3.自定義序列化器

如果要完全控制序列化,則必須實現自定義StdSerializer

public class CustomDateSerializer extends StdSerializer<Date> {

    private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");

    public CustomDateSerializer() {
        this(null);
    }

    public CustomDateSerializer(Class t) {
        super(t);
    }

    @Override
    public void serialize(Date date, JsonGenerator generator, SerializerProvider provider) 
        throws IOException, JsonProcessingException {

        generator.writeString(formatter.format(date));
    }
}

然后將其與@JsonSerialize一起使用

public class TestPojo {

    @JsonSerialize(using = CustomDateSerializer.class)
    public Date testDate;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM