Robert Lehmann <lehman...@gmail.com> added the comment: This only seems to be the case with the C implementation of json (_json).
>>> json.encoder.c_make_encoder = None >>> json.dumps(OrderedDict(items)) '{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5}' I think the culprit is encoder_listencode_dict (Modules/_json.c:2049). It uses PyDict_Next to fetch all items from the dictionary and thereby loses order. A special code branch for dict subclasses (!PyDict_CheckExact) which uses PyIter* instead should solve the problem. (PyDict_Next should not honor order no matter what IMO.) If nobody beats me to it I can try to come up with a patch. ---------- nosy: +lehmannro _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue6105> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com