問題

在我們最近的專案中,我們使用java 8.我需要將java.time.LocalDateTime序列化為java指令碼日期格式.

目前我做的是定義一個自定義序列化器,將LocalDateTime轉換為timestamp.

 public class LocalDateTimeSerializer implements JsonSerializer<LocalDateTime> {
    @Override
    public JsonElement serialize(LocalDateTime localDateTime, Type type, JsonSerializationContext jsonSerializationContext) {
        Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
        Date date = Date.from(instant);
        return new JsonPrimitive(date.getTime());
    }
}
 

然後使用GsonBuilder使用我的自定義LocalDateTimeSerializer建立Gson物件

 GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer());

Gson gson = gsonBuilder.create();
 

然後在Java指令碼中,我使用time stamp建立一個Date物件.它工作正常.

我需要知道,這樣可以嗎?或者有更好的方法來做到這一點?

  最佳答案

是的,這是最好的方法。

高度推薦將Time物件轉換為long型別表示,當您將從一個系統轉換到另一個系統時.這可以避免許多問題,例如資料格式化和不同系統中的時間本地化.

而且,long表示只需要8位元組,而字串表示需要更多一些.這意味著long表示更有效地傳輸和解析.

  相同標籤的其他問題

javajavascriptserializationgson