Delivery 1.0 Help

Serializacja daty i czasu w formacie JSON

Wprowadzenie

Istnieje kilka sposobów na serializację dat i czasów w JSONach m. in:

- ISO-8601

- RFC-3339

- UNIX timestamp

- “Tablica” (np [2023,2,14,17,0,0,80000000] - domyślna strategia w niektórych frameworkach JVM)

Dlaczego ISO-8601?

Stosowanie standardu ISO-8601 ma kilka korzyści:

  1. Jednoznaczność: Standard precyzyjnie definiuje format daty i czasu, dzięki czemu różne systemy i aplikacje mogą łatwiej współpracować ze sobą bez mylenia dat.

  2. Międzynarodowość: ISO-8601 jest standardem międzynarodowym, co oznacza, że jest rozpoznawany i stosowany na całym świecie. Używając go, łatwiej jest komunikować się z ludźmi i systemami w różnych krajach.

  3. Ułatwia sortowanie i wyszukiwanie: Formatowanie daty i czasu zgodnie z ISO-8601 ułatwia sortowanie i wyszukiwanie danych w różnych aplikacjach.

  4. Kompatybilność z innymi standardami: ISO-8601 jest powszechnie akceptowany i używany przez wiele innych standardów i specyfikacji, co ułatwia integrację z innymi systemami i aplikacjami.

Dodatkowe wymagania

W celu zapewnienia bezproblemowej współpracy różnych narzędzi w tym frameworków JVM takich jak Spring Boot, Quarkus czy Wildfly, bibliotek do serializacji jak Jackson czy narzędzie jak Kafka Connect wymagane jest dodatkowe doprecyzowanie formatu. W związku z czym przyjmujemy, że dla wartości typu DataTime:

  • separator czasu 'T' jest wymagany

  • frakcje sekund są wymagane, ale ich precyzja jest dowolna

  • wartość musi być parsowalna z użyciem SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS")

Podsumowanie

Wszystkie systemy wymieniające się danymi w formacie JSON powinni dostosować się do formatu ISO-8601 z ww dodatkowymi założeniami. Alternatywne formaty jak unix timestamp czy tym bardziej format tablicowy powinny zostać wycofane.

Last modified: 30 May 2024