2010-04-19 6 views
3

Я использую JSON и jsonpickle иногда сериализации объектов в файлы, используя следующую функцию:сериализации JSON файлов с символами новой строки в Python

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?

спасибо.

ответ

3

(simple)json.dump() имеет аргумент indent. jsonpickle, вероятно, имеет нечто похожее, или в худшем случае вы можете его декодировать и снова закодировать.

2

Jsonpickle использует один из JSon движки, и поэтому вы можете попробовать это в ваш код:

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