使用Python中的换行符序列化JSON文件

时间:2010-04-19 01:48:51

标签: python json serialization pickle jsonpickle

我有时使用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文件一样。有没有办法使对象的每个元素(例如dict中的每个条目,或列表中的每个元素)都放在JSON输出文件中的单独一行上?

感谢。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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)