我有一个字符串,该字符串基本上包含一堆JSON格式的文本,最终我希望将其以“漂亮打印”格式导出到Excel,并带有适当的缩进嵌套等。
出于可读性考虑,必须保留键/值的原始顺序。我想实现自己想要的目标的过程是
a)使用类似eval的方法将字符串转换为字典,b)使用collections库中的OrderedDict保持顺序完整。
但是我没有得到预期的结果:
In [21]: json_string = str({"id":"0","last_modified":"undefined"}) In [22]: OrderedDict(eval(json_string)) Out[23]: OrderedDict([('last_modified', 'undefined'), ('id', '0')])
我也还没有弄清楚如何将输出以漂亮的打印格式写成excel,但是我希望那会是相对容易的部分!
您可以使用JSONDecoder的object_pairs_hook参数将已解码的字典更改为OrderedDict:
object_pairs_hook
import collections import json decoder = json.JSONDecoder(object_pairs_hook=collections.OrderedDict) json_string = '{"id":"0","last_modified":"undefined"}' print decoder.decode(json_string) json_string = '{"last_modified":"undefined","id":"0"}' print decoder.decode(json_string)
打印:
OrderedDict([(u'id', u'0'), (u'last_modified', u'undefined')]) OrderedDict([(u'last_modified', u'undefined'), (u'id', u'0')])