在Python中序列化带换行符的JSON文件
我有时候会用json和jsonpickle把对象保存到文件里,使用下面这个函数:
def json_serialize(obj, filename, use_jsonpickle=True):
f = open(filename, 'w')
if use_jsonpickle:
import jsonpickle
json_obj = jsonpickle.encode(obj)
f.write(json_obj)
else:
simplejson.dump(obj, f)
f.close()
问题是,如果我把一个字典用“json_serialize(mydict, myfilename)”这个方法保存下来,结果整个内容就会挤在一行里。这就导致我不能像查看CSV文件那样,方便地用grep命令在文件里查找内容。有没有办法让每个对象的元素(比如字典里的每一项,或者列表里的每一个元素)在JSON输出文件中单独占一行呢?
谢谢。
2 个回答
5
(simple)json.dump()
这个函数有一个叫 indent
的参数。jsonpickle
可能也有类似的功能,或者如果没有的话,你可以先把数据解码,然后再重新编码一次。
6
Jsonpickle使用了一种json的后端,所以你可以在你的代码中试试这个:
jsonpickle.set_encoder_options('simplejson', sort_keys=True, indent=4)
更新:simplejson已经被合并到基础的python中了,只需要把simplejson
替换成json
,这样你就能得到格式化的、好看的json,而不是压缩过的那种。
jsonpickle.set_encoder_options('json', sort_keys=True, indent=4)