我有时使用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输出文件中的单独一行上?
感谢。
答案 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)