使用Python对带有换行符的JSON文件进行序列化

5

我有时会使用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个回答

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)

5
(simple)json.dump()indent参数。jsonpickle可能有类似的东西,或者在最坏的情况下你可以先解码再编码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接