Eli Bendersky added the comment:

I've been reading the discussion again to figure out what we need to move 
forward; it appears that a simple approach of using str(int(obj)) in json 
encoding when isinstance(obj, int) was acceptable for many of the participants, 
and it helps solve the most common problem - the one with IntEnum. We can solve 
it now, move on to converting socket.* and other constants to IntEnum and 
perhaps change the solution to something more grandiose later.

I'm attaching a proof-of-concept (probably incomplete) patch that implements 
this for the Python and C implementations of json.

With it applied, Nick's example goes like this:

>>> from enum import IntEnum
>>> import json
>>> class Example(IntEnum): x = 1
... 
>>> json.dumps(Example.x)
'1'
>>> json.loads(json.dumps(Example.x))
1
>>> 

When thinking about the more generic approaches, we must consider what was 
raised here already - JSON interoperates with other languages, for which 
Python's enum is meaningless (think of JavaScript, for instance). So the only 
logical way to JSON-encode a IntEnum is str(int(...)).

----------
keywords: +patch
Added file: http://bugs.python.org/file31134/issue18264.1-prelim.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue18264>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to