JSON对象中的项目是否使用“json.ddump”出现故障?

JSON对象中的项目是否使用“json.ddump”出现故障?

我在用json.dumps转换成json

countries.append({"id":row.id,"name":row.name,"timezone":row.timezone})print json.dumps(countries)

我的结果是:

[
   {"timezone": 4, "id": 1, "name": "Mauritius"}, 
   {"timezone": 2, "id": 2, "name": "France"}, 
   {"timezone": 1, "id": 3, "name": "England"}, 
   {"timezone": -4, "id": 4, "name": "USA"}]

我希望按以下顺序设置键:ID、Name、Timezone-但我有时区、id、name。

我该怎么解决这个问题?



jeck猫
浏览 301回答 3
3回答

至尊宝的传说

双Pythondict(在Python3.7之前)和JSON对象是无序集合。你可以通过sort_keys参数,对键进行排序:>>> import json>>> json.dumps({'a': 1, 'b': 2})'{"b": 2, "a": 1}'>>> json.dumps({'a': 1, 'b': 2}, sort_keys=True)'{"a": 1, "b": 2}'如果你需要一份特别的订单,你可以使用collections.OrderedDict:>>> from collections import OrderedDict>>> json.dumps(OrderedDict([("a", 1), ("b", 2)]))'{"a": 1, "b": 2}' >>> json.dumps(OrderedDict([("b", 2), ("a", 1)]))'{"b": 2, "a": 1}'自Python 3.6以来,保留关键字参数顺序,可以使用更好的语法重写上面的内容:>>> json.dumps(OrderedDict(a=1, b=2))'{"a": 1, "b": 2}'>>> json.dumps(OrderedDict(b=2, a=1))'{"b": 2, "a": 1}'看见Pep 468-保留关键字参数顺序.如果输入为JSON,则保留顺序(以便OrderedDict),你可以通过object_pair_hook>>> json.loads('{"a": 1, "b": 2}', object_pairs_hook=OrderedDict)OrderedDict([('a', 1), ('b', 2)]) >>> json.loads('{"b": 2, "a": 1}', object_pairs_hook=OrderedDict)OrderedDict([('b', 2), ('a', 1)])

慕哥6287543

字典的顺序与它所定义的顺序没有任何关系。所有字典都是这样,而不仅仅是那些变成JSON的字典。>>> {"b": 1, "a": 2}{'a': 2, 'b': 1}事实上,这本字典还没到,就被翻了个底朝天。json.dumps:>>> {"id":1,"name":"David","timezone":3}{'timezone': 3, 'id': 1, 'name': 'David'}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python