欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

date轉json怎么不讓他變成long

方一強1年前8瀏覽0評論

在Java應用程序開發中,可能需要將Date對象轉換成JSON格式的數據。但是在轉換過程中,可能會遇到一個問題:Date對象被轉換為了長整型(long)。

例如,下面是一個將Date對象轉換成JSON格式的示例代碼:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
public class Test {
public static void main(String[] args) throws Exception {
Date date = new Date();
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(date);
System.out.println(json);
}
}
輸出結果為:
1574755899361
可以看到,Date對象被轉換成了長整型(long)。

那么我們該如何避免Date被轉換成long呢?

一種解決方法是使用@JsonFormat注解,如下示例代碼:

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
public class Test {
public static void main(String[] args) throws Exception {
Date date = new Date();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
String json = objectMapper.writeValueAsString(date);
System.out.println(json);
}
}
輸出結果為:
"2019-11-26 15:25:57"
可以看到,Date對象被轉換成了字符串類型。

另外一種解決方法是使用@JsonSerialize注解,如下示例代碼:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.util.Date;
public class Test {
public static void main(String[] args) throws Exception {
Date date = new Date();
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(new DateVO(date));
System.out.println(json);
}
static class DateVO {
@JsonSerialize(using = DateSerializer.class)
private Date date;
public DateVO(Date date) {
this.date = date;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
static class DateSerializer extends JsonSerializer{
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = dateFormat.format(date);
jsonGenerator.writeString(dateString);
}
}
}
輸出結果為:
"2019-11-26 15:38:21"
可以看到,Date對象被轉換成了字符串類型。

總的來說,我們可以通過@JsonFormat注解或@JsonSerialize注解來自定義Date對象的JSON格式,避免出現Date對象被轉換為long的情況。