有字符串 c = '{"b":1, "a":2}' ,目标是将c转换成dict后,遍历dict,输出的key的顺序是b、a。而不是a、b。
import json
from collections import OrderedDict
c ='{"b":1, "a":2}'
c = json.loads(c, object_pairs_hook=OrderedDict)
for key in c:
print key
总结:
str转化为 json 格式同时保存其已有顺序需要在 json.loads() 中使用参数 object_pairs_hook。
相应的 在存储 c的时候就使用 OrderedDict 而非用默认的 dict。
from collections import OrderedDict
c = OrderedDict()
c['b'] = 1
c['a'] = 2
print(c, type(c))
c = json.dumps(c)
print(c, type(c))
附:json.dumps:作用是将字典转换为字符串。
json.loads: 作用是将字符串转换为json(dict)。