On Sun, Sep 11, 2022 at 6:10 PM Terry M <tmosc...@gmail.com> wrote:
>
> Hi Tatu,
>
> Thank you for your work on Jackson.
>
> Could I propose date/time classes (in particular java.time.*) serialise as 
> RFC 3339 / ISO 8601 interchange format by default for Jackson 3, and not as 
> an epoch second, milli, micro or nano, etc.
>
> It is the recommended practice by many in the industry (E.g. Google / 
> Microsoft / json-schema validation, see links below) that RFC 3339 / ISO 8601 
> be used for the serialisation format for date/times in JSON and in particular 
> JSON REST API design.
>
> It is also generally the default format used by java.time.* .toString() and 
> .parse() methods.
>
> RFC 3339 / ISO 8601, I would say, is a better format than an epoch as
>
> it is human readable
> can preserve timezone information
> has nano precision
> has a maximum timestamp value that is not limited by the bit-length of a 
> double/long (platform specific) and
> does not have unambiguous precision when inspecting the value (milli/micro, 
> etc).
>
> Additionally, is a more intuitive format for serialising LocalDate, rather 
> than the current default of a JSON numeric array of [year, month, day]
>
> Speaking from my experience, its seems a common source of bugs for developers 
> not realising that either overriding global config defaults (e.g. disable 
> SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) or field level annotations 
> (@JsonFormat(shape = STRING)) are necessary (or possible) to serialise as 
> such.
>
> Other frameworks may for instance try to do this already, for example Spring 
> Boot's JacksonAutoConfiguration does this by default.
>
> I did see JSTEP-2: Changes to date/time defaults and JSTEP-5: Unify Date/Time 
> handling but it seems it hadn't come to a firm conclusion what the default 
> behaviour for date time serialisation in Jackson should be.
>
> Thanks for your consideration.
>
> References which consider RFC 3339 / ISO 8601 for datetime:
>
> Google JSON style guide - Date Time Property values
> Microsoft API guidelines - JSON serialisation of dates and times
> JSON Schema - dates and times
> API Stylebook - date time - Collection of other vendor Styleguides

Thank you for this well-researched proposal. I think that it would
make sense to change the defaults here.

But how do others feel? Does anyone think that the use of
(Java-centric) timestamps as the default would be better choice?

-+ Tatu +-

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jackson-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jackson-dev/CAL4a10iQ%2By__wLq3DX5mhX4kM1KX3ib4_p8CiXmUmqDcteuhHw%40mail.gmail.com.

Reply via email to