Antoine Pitrou writes:

 > Here is a use case where it may remove some pain from users'life:
 > https://bugs.python.org/issue24313

The problem is that a protocol like __json__ doesn't help in
deserializing, so you either can't use json.loads(), or more likely
you'll need to have a post-parser to rebuild the objects.  And it
actually doesn't help as much as you'd hope in serializing, either,
not for a decade or so, because most objects won't have a __json__
method.  So every time somebody creates an object that they want to
serialize, they'll have to subclass any imported class that doesn't
have a __json__ method, and in the somewhat likely event they want to
deserialize, they'll need to provide an ad hoc parser for that kind of
object rather than using json.loads() (or hook it into the post-parser
somehow).  Robust programs will have to trap the inevitable
AttributeErrors.

And you can be sure that people will be adding __json__ methods to
some of their application classes, so they'll start expecting __json__
methods on any object they put in such classes.  Seems like a magnet
for bug reports and RFEs to me.

It's still true that just defining the protocol could allow users to
just use json.dumps() for many common cases, which is clearly very
convenient.  I don't think it's worth the fragility, though.

Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/ZWC3JZ7R54U3PTKSNIKESRKFQJMDQ23O/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to