[Python-ideas] Serialization of CSV vs. JSON
Wes Turner
wes.turner at gmail.com
Sat Nov 3 10:16:53 EDT 2018
jsondate, for example, supports both .load[s]() and .dump[s](); but only
for UTC datetimes
https://github.com/rconradharris/jsondate/blob/master/jsondate/__init__.py
UTC is only sometimes a fair assumption; otherwise it's dangerous to assume
that timezone-naieve [ISO8601] strings represent UTC-0 datetimes. In that
respect - aside from readability - arbitrary-precision POSIX timestamps are
less error-prone.
On Saturday, November 3, 2018, David Shawley <daveshawley at gmail.com> wrote:
> On Nov 3, 2018, at 9:29 AM, Chris Angelico <rosuav at gmail.com> wrote:
>
>
> I think we need to clarify an important distinction here. JSON, as a
> format, does *not* support date/time objects in any way. But
> JavaScript's JSON.stringify() function is happy to accept them, and
> will represent them as strings.
>
>
> Very good point. The JSON document type only supports object literals,
> numbers, strings, and Boolean literals. My suggestion was specifically to
> provide an extensible mechanism for encoding arbitrary objects into the
> supported primitives.
>
> If the suggestion here is to have json.dumps(datetime.date(2018,11,4))
> to return an encoded string, either by natively supporting it, or by
> having a protocol which the date object implements, that's fine and
> reasonable; but json.loads(s) won't return that date object. So, yes,
> it would be asymmetric. I personally don't have a problem with this
> (though I also don't have any strong use-cases). Custom encoders and
> decoders could do this, with or without symmetry. What would it be
> like to add a couple to the json module that can handle these extra
> types?
>
>
> Completely agreed here. I've seen many attempts to support "round trip"
> encode/decode in JSON libraries and it really doesn't work well unless you
> go
> down the path of type hinting. I believe that MongoDB uses something akin
> to
> hinting when it handles dates. Something like the following representation
> if I recall correctly.
>
> {
> "now": {
> "$type": "JSONDate",
> "value": "2018-11-03T09:52:20-0400"
> }
> }
>
> During deserialization they recognize the hint and instantiate the object
> instead of parsing it. This is interesting but pretty awful for
> interoperability since there isn't a standard that I'm aware of. I'm
> certainly not proposing that but I did want to mention it for completeness.
>
> I'll try to put together a PR/branch that adds protocol support in JSON
> encoder
> and to datetime, date, and uuid as well. It will give us something to
> point at
> and discuss.
>
> - cheers, dave.
> --
> Mathematics provides a framework for dealing precisely with notions of
> "what is".
> Computation provides a framework for dealing precisely with notions of
> "how to".
> SICP Preface
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20181103/d7bf411e/attachment.html>
More information about the Python-ideas
mailing list