JSON有序集

时间:2015-01-30 00:43:17

标签: python json python-2.7

我在Python 2.7中创建了一个有序的dict。然后我插入键值对。有序的字典保持了我插入键的顺序。

现在我使用dump()将此内容写入文件,突然之间订单搞砸了。我知道json不关心顺序,但是我用ordereddict读到了它,它应该以某种方式工作吗?

也许只是插入是不够的,我是否需要根据现在的插入顺序创建自定义排序顺序? 那么有希望吗?

修改 我发现python上的一切都是正确的。保存之后查看json的程序会扰乱订单。

1 个答案:

答案 0 :(得分:1)

如果您正在使用collections.OrderedDict类,json.dumps应该已经观察到有序输出。我刚尝试在本地进行快速测试,并取得了成功:

>>> import collections
>>> import json
>>> d = collections.OrderedDict()
>>> d['foo'] = 'bar'
>>> d['baz'] = 'quux'
>>> json.dumps(d)
'{"foo": "bar", "baz": "quux"}'
>>> d['wat'] = 'waaaaat'
>>> json.dumps(d)
'{"foo": "bar", "baz": "quux", "wat": "waaaaat"}'
>>> d['baz'] = 'qux'
>>> json.dumps(d)
'{"foo": "bar", "baz": "qux", "wat": "waaaaat"}'
>>> d[123] = 456
>>> json.dumps(d)
'{"foo": "bar", "baz": "qux", "wat": "waaaaat", "123": 456}'

如果您没有看到此行为,您是否介意提供表现出不良行为的样本?