首頁 > Java > java教程 > 如何使用 Jackson 在 JSON 中正確格式化 Java 8 LocalDate 物件?

如何使用 Jackson 在 JSON 中正確格式化 Java 8 LocalDate 物件?

Mary-Kate Olsen
發布: 2024-12-30 01:54:08
原創
338 人瀏覽過

How to Properly Format Java 8 LocalDate Objects in JSON using Jackson?

使用Jackson 格式化Java 8 LocalDate

問題:

建議的解決方案:

自訂格式LocalDate 物件進行JSON 序列化,可以使用以下方法:

  1. 配置Jackson ObjectMapper:
  2. 為ObjectMapper建立ContextResolver實作。
  3. 在ObjectMapper中註冊JavaTimeModule以支援LocalDate序列化。
  4. 啟用WRITE_DATES_AS_TIMESTAMPS功能為false,作為LocalDate代表沒有日期
  5. 在JAX-RS 應用程式中使用ContextResolver:
  6. 在JAX-RS 應用程式中使用ContextResolver:
  7. 實作ObjectMapperContextResolver 介面提供配置的ObjectMapper.
  8. 註解資源類別以進行JSON 轉換:
使用適當的反序列化器和序列化器器類別會新增@JsonDeserialize 和@JsonSerialize 註解來處理LocalDate 轉換。

範例程式碼:

ContextResolver:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;

@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
    @Override
    public ObjectMapper getContext(Class<?> type) {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JavaTimeModule());
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        return mapper;
    }
}
登入後複製

資源類別:
import java.time.LocalDate;

@Path("person")
public class LocalDateResource {
    @GET
    public Person getPerson() {
        return new Person(LocalDate.now());
    }
}
登入後複製

Person類別:
public class Person {
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate birthDate;
}
登入後複製

透過實現這種方法,可以有效地序列化和反序列化LocalDate 對象,從而實現靈活的 JSON 格式。

以上是如何使用 Jackson 在 JSON 中正確格式化 Java 8 LocalDate 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板