4

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

谢谢。

4

2 回答 2

4

(simple)json.dump()indent论据。jsonpickle可能有类似的东西,或者在最坏的情况下,您可以对其进行解码并再次对其进行编码。

于 2010-04-19T01:51:14.567 回答
3

Jsonpickle 使用 json 后端之一,因此您可以在代码中尝试此操作:

jsonpickle.set_encoder_options('simplejson', sort_keys=True, indent=4)

更新:simplejson 已被合并到基本 python 中,只需替换simplejsonfor json,您将获得漂亮打印/格式化/非缩小的 json

jsonpickle.set_encoder_options('json', sort_keys=True, indent=4)
于 2010-12-05T14:43:06.173 回答